Mam problem z obsługą sesji w PHP (wersja 5.2.10). Używam poniższych funkcji do logowania, wylogowywania i sprawdzania poprawności.Błąd podczas niszczenia sesji w PHP
login() { session_set_cookie_params(0); session_start(); session_regenerate_id(true); $_SESSION['user_id'] } validate_session() { session_set_cookie_params(0); session_start(); if (isset($_SESSION['user_id']) === FALSE) { session_destroy(); logout(); header("Location: login_page"); } } logout() { session_set_cookie_params(0); session_start(); $_SESSION = array(); setcookie(session_name(), '', time() - 3600, '/'); session_destroy(); }
Każda strona najpierw wywołuje funkcję validate_session(). Jeśli sesja jest nieprawidłowa, przekierowuje na stronę logowania. Funkcja login() służy do tworzenia sesji dla użytkownika. Gdy użytkownik klika wylogowanie, wywoływana jest funkcja wylogowania() w celu zniszczenia sesji.
Problemem jest: losowo funkcja logout() generuje ostrzeżenie:
Warning: session_destroy(): zniszczenie obiektu Session powiodło
otrzymuję ostrzeżenie to bardzo rzadko. Podobnie jak w przypadku 20-30 połączeń do wylogowania, otrzymuję go jednorazowo. jakieś pomysły?
Pracuję na komputerze z Windows XP.
Aktualizacja: sesje są przechowywane w systemie plików.
Ścieżka: C: \ WINDOWS \ Temp
Wydaje się to już dawno zaakceptowaniu żadnej odpowiedzi na StackOverflow .. –
Tak! Nie byłem bardzo aktywny w stackoverflow. A w niektórych przypadkach nie mam jeszcze satysfakcjonującej odpowiedzi. – Varun
Cześć Varun, czy możesz wyjaśnić, dlaczego w tym porównaniu podróż jest równa? Zwykle, jeśli (! Isset()) byłby wystarczający, wiem, że jest on bardziej ironiczny, ale isset() powinien tylko zwracać wartość boolean, czy naprawdę musisz potwierdzić jej typ? Prawdopodobnie nie jest to prawdopodobne, ale może czasami powraca, kiedy nie powinno? – picus