Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Skrypt wylogowania nie działa w Firefox
Garello
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.01.2011

Ostrzeżenie: (0%)
-----


Witam serdecznie, to mój pierwszy post i nie wiem czy to przedszkole, ale nie będę się wychylał (IMG:style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
ciekawskiii
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


Dziwnie usuwasz sesje, nie lepiej tak
Go to the top of the page
+Quote Post
Garello
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.01.2011

Ostrzeżenie: (0%)
-----


może i dziwnie, ale zmiana na podany sposób nie rozwiązuje problemu.
Go to the top of the page
+Quote Post
sadistic_son
post
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Spróbuj jeszcze poprzez:
  1. unset($_SESSION);
Go to the top of the page
+Quote Post
kalmaceta
post
Post #5





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

Ostrzeżenie: (0%)
-----


@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

Ten post edytował kalmaceta 17.01.2011, 14:05:58
Go to the top of the page
+Quote Post
Garello
post
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.01.2011

Ostrzeżenie: (0%)
-----


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. }

Go to the top of the page
+Quote Post
kalmaceta
post
Post #7





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

Ostrzeżenie: (0%)
-----


przy usuwaniu sesji ustawiaj (jak robisz setcookie) cookie user_id na jakąś wartość np. del, a w sprawdzaniu logowania wyklucz ta wartosc
Go to the top of the page
+Quote Post
sadistic_son
post
Post #8





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Garello
post
Post #9





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.01.2011

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
thek
post
Post #10





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:15