2012-12-19 20 views
6
?php 
function destroy_session_and_data() { 
session_start(); 
$_SESSION = array(); 
if (session_id() != "" || isset($_COOKIE[session_name()])) 
setcookie(session_name(), '', time() - 2592000, '/'); 
session_destroy(); 
} ?> 

Rozumiem, że powyższy kod służy do zakończenia sesji, ale nie rozumiem potrzeby warunku if i komendy setcookie.Czym dokładnie jest session_id() i session_name()? Wyjaśnij, w jaki sposób są one używane w następującym kodzie:

Proszę również wyjaśnić, co to jest session_id() i session_name().

Wyraźne wyjaśnienie byłoby najbardziej docenione. Dzięki

Odpowiedz

3

Sesja pracuje z ustawieniem pary klucz/wartość w Klucz wskazuje, że jest to identyfikator sesji, a wartość jest identyfikatorem sesji. Domyślnie dla stron internetowych opartych na PHP kluczem jest PHPSESSID, ale można go zmienić:

Kod sprawdza, czy nastąpiła sesja z żądaniem, albo rozpoczynając prawidłową sesję (identyfikator sesji() zwróci identyfikator sesji), albo właśnie PHPSESSID w cookie - i forse przeglądarki, aby usunąć plik cookie przez ustawienie daty wygaśnięcia w przeszłości

+0

Twierdzę, że lepiej jest pozostawić czyszczenie sesji do domyślnej implementacji i zarządzać stanem z niestandardową zmienną sesji - secret_access_allowed = true, ale zawsze są wyjątki. – drk

0

, aby dowiedzieć się, w jakiej "sesji" znajduje się użytkownik, ustawiany jest plik cookie. Dopóki ten plik cookie jest dostępny, użytkownik pozostanie w tej samej sesji. Aby zakończyć sesję, musi być usunięty (to wyjaśnia setcookie().

session_id() i session_name() znajdują się w manaul php

1

Z instrukcji:

session_id() jest używana do pobierania lub ustaw identyfikator sesji dla bieżącej sesji.

session_name() zwraca nazwę bieżącej sesji. Jeśli zostanie podana nazwa, session_name() zaktualizuje nazwę sesji i zwróci starą nazwę sesji.

id jest używany jako klucz podstawowy (unikatowy) dla bazy danych, w której przechowywane są sesje (domyślnie tylko w plikach na dysku), name to tylko nazwa. Nie jestem pewien, czy name musi być unikalny. W tym przypadku kod sprawdza, czy jest to identyfikator session_id (pobierz dane z cookie przeglądarki i odnośnik do lokalnej bazy danych), czy też jest plik cookie z podaną nazwą_sesji. Jeśli tak, ustawia czas wygaśnięcia ciasteczka (strona klienta) na 43,2 minuty temu i niszczy sesję (po stronie serwera).

Powiązane problemy