Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrypt wylogowania nie działa w Firefox
Forum PHP.pl > Forum > Przedszkole
Garello
Witam serdecznie, to mój pierwszy post i nie wiem czy to przedszkole, ale nie będę się wychylał smile.gif

Otóż sprawa wygląda tak, że mam skrypt wylogowywania jak poniżej i w Chrome wszystko działa dobrze, ale w Firefox nie.
Jak otwieram Firefoxa pierwszy raz mogę się wylogować, a następnie zalogować ale już kolejny raz nie mogę się wylogować.
Nie wiem czy coś dla tej przeglądarki trzeba inaczej zrobić, może ktoś wie ?
Z góry dziękuję za pomoc.
  1. <?php
  2. // Jeśli użytkownik jest zalogowany, należy usunąć zmienne sesji, aby go wylogować.
  3. if (isset($_SESSION['user_id'])) {
  4. // Usunięcie zmiennych sesji przez wykasowanie elementów tablicy $_SESSION.
  5. $_SESSION = array();
  6.  
  7. // Usunięcie pliku cookie sesji przez ustawienie daty wygasania na godzinę (3600 sekund) wstecz.
  8. if (isset($_COOKIE[session_name()])) {
  9. setcookie(session_name(), '', time() - 3600);
  10. }
  11.  
  12. // Kończenie sesji.
  13. }
  14.  
  15. // Usunięcie plików cookie z identyfikatorem i nazwą użytkownika
  16. // przez ustawienie ich daty wygasania na godzinę wstecz (3600 sekund).
  17. setcookie('user_id', '', time() - 3600);
  18. setcookie('email', '', time() - 3600);
  19.  
  20. // Skierowanie użytkownika do strony głównej.
  21. $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php';
  22. header('Location: ' . $home_url);
  23. ?>
ciekawskiii
Dziwnie usuwasz sesje, nie lepiej tak
Garello
może i dziwnie, ale zmiana na podany sposób nie rozwiązuje problemu.
sadistic_son
Spróbuj jeszcze poprzez:
  1. unset($_SESSION);
kalmaceta
@sadistic_son: nie usuwa się zmiennej $_SESSION to błąd, por. z php.net

@Garello: robisz z sesja wszystko jak trzeba, błąd masz w sposobie czyszczenia cookie. pokaz jak sprawdzasz czy użytkownik jest zalogowany to będzie jasne
Garello
Prawie na pewno problem leży gdzieś tutaj ale go nie widzę ...

  1. <?php
  2.  
  3. // Jeśli zmienne sesji nie są ustawione, należy spróbować użyć do tego plików cookie.
  4. if (!isset($_SESSION['user_id'])) {
  5. if (isset($_COOKIE['user_id']) && isset($_COOKIE['email'])) {
  6. $_SESSION['user_id'] = $_COOKIE['user_id'];
  7. $_SESSION['email'] = $_COOKIE['email'];
  8. }
  9. }
  10.  
  11. ?>


a czy użytkownik jest zalogowany sprawdzam przez

  1. if (isset($_SESSION['user_id'])) {
  2. // lalala
  3. }
  4. else {
  5. // lalala
  6. }

kalmaceta
przy usuwaniu sesji ustawiaj (jak robisz setcookie) cookie user_id na jakąś wartość np. del, a w sprawdzaniu logowania wyklucz ta wartosc
sadistic_son
Cytat(kalmaceta @ 17.01.2011, 14:02:53 ) *
@sadistic_son: nie usuwa się zmiennej $_SESSION to błąd, por. z php.net
Racja, mój błąd.
Garello
Niestety nie pomogło.
Na pewno problem jest w obsłudze cooki przez przeglądarki. Jak wyłączę cooki wszystko działa pięknie, ale po zamknięciu przeglądarki trzeba się ponownie logować. Jak wyłączę sesie i zostawiam tylko cooki jest ten sam problem, czyli w Chrome i Safari wszystko działa a w IE, Firefox i Operze można się 1 raz wylogować potem ponownie zalogować i już się nie da wylogować. Muszę zamknąć przeglądarkę i po ponownym jej uruchomieniu znów mogę się 1 raz wylogować.


No cóż tymczasem przełączę się tylko na sesje, a pamiętanie haseł zostawię przeglądarce. Może coś wymyślę później bo za długo trwa szukanie rozwiązania.

Pozdrawiam i dzięki
thek
Owszem... Ciacha robią problem, ponieważ w coocies nie tak usuwa się zmienne ak w php. To, że walniesz tam ciąg pusty nie usuwa klucza z ciasta, ale zostawia go, tyle że z wartością pustą. Użyj unset dany klucz (jeśli ciastko ma pozostać) albo ustaw czas życia ciastka na czas z przeszłości, a zostanie one usunięte/uznane za nieważne. Tylko tak się to robi.

Możliwe, że przez przypadek ustawiasz w plikach kolejność tak, że ciacho nigdy nie jest kasowane. Musiałbyś prześledzić sobie to co się dzieje po kolei.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.