Czy to błąd w książce PHP & MySQL: Novice to Ninja, 6th Edition?

0

Cześć
Podczas przerabiania książki PHP & MySQL: Novice to Ninja, 6th Edition w dziale "Wylogowanie" natrafiłem na dziwna linię kodu. Mianowicie aby usunąć wszelkie dane z bieżącej sesji autor używa unset($_SESSION);
Po kliknięciu logout przenosi mnie na stronę localhost/logout z potwierdzeniem że wszystko przebiegło pomyślnie i przycisk zmienia się z logout na login. Wszystko jest jak należy ale kiedy przejdę np. localhost czy odświeżę stronę to użytkownik nadal pozostaje niewylogowany. Przycisk zmienia się z powrotem na logout, strony tylko dla zalogowanych pozostaja dostępne itp.
Kiedy zmieniłem ją na którąkolwiek z tych instrukcji wszystko działa:

  • $_SESSION = array();
  • session_destroy();
  • session_unset();

W php.net wyraźnie napisali że: > Do NOT unset the whole $_SESSION with unset($_SESSION) as this will disable the registering of session variables through the $_SESSION superglobal.

Podczas logowania ustawiane są zmienne sesyjne $_SESSION['username'] i $_SESSION['password'] . Możecie mi powiedzieć jak ja mam zmienic tę linie i czy w ogóle aby było poprawnie?

0

Błędy w książkach się zdarzają, nie ma w tym nic dziwnego.

0

Tutaj kod do klasy z metodą logout(na samym dole).
https://github.com/spbooks/phpmysql6/blob/Sessions-Logout/classes/Ijdb/Controllers/Login.php

Znalazłem też coś takiego:
https://github.com/spbooks/phpmysql6/pull/6/commits/eeac7c16a66b478e76f226ca119a0718d9c9047b
Proponują dodanie session_destroy(); ale czy pozostawienie unset($_SESSION); jest właściwe, czy można tak usuwać dane sesji?

1 użytkowników online, w tym zalogowanych: 0, gości: 1