Zniszcz sesję PHP

Zniszcz sesję PHP
Gdy użytkownik odwiedza stronę internetową w przeglądarce, czas przekazany przez tego użytkownika na tej stronie jest nazywany sesją dla tego użytkownika. Gdy użytkownik zamyka przeglądarkę lub wylogowanie ze strony, sesja wygasa. Informacje o sesji można przechowywać za pomocą pliku cookie na komputerze klienta lub za pomocą skryptu PHP, który jest przechowywany na serwerze. Informacje przechowywane przez plik cookie można łatwo zhakować przez nieautoryzowany dostęp. Tak więc sposób przechowywania informacji o sesji za pomocą pliku cookie jest niezabezpieczony. PHP ma kilka wbudowanych funkcji i zmiennych sesji, aby zachować i zniszczyć informacje o sesji użytkowników. W tym samouczku pokazano sposób na niezniszczoną zmienną sesji i zniszczyć sesję PHP.

Zmienna sesji UNSET

Konkretne dane sesji można usunąć za pomocą funkcji unset (). Funkcja session_unset () służy do usuwania wszystkich danych związanych z sesją określonej sesji. PHP używa tablicy asocjacyjnej $ _session, aby zachować dane sesji.

Składnia:

Składnia session_unset () Funkcja podała poniżej.

void session_unset ();

Służy do rozwiązywania bieżącej sesji poprzez usunięcie wszystkich danych związanych z sesją z tablicy $ _session. Nic nie zwraca.

Przykład-1: Zmienna sesji UNSET

Usuwanie sesji za pomocą funkcji session_unset () pokazano w poniższym przykładzie. Utwórz plik PHP z następującym skryptem Utwórz sesję dla uwierzytelnionych użytkowników i sprawdź wartość tablicy $ _session po zniszczeniu sesji. Formularz jest używany w skrypcie do przyjęcia nazwy użytkownika i hasła.

Następnie wartości te zostaną porównane z określonymi wartościami, aby sprawdzić uwierzytelnianie. Sesja zostanie utworzona za pomocą funkcji session_start () dla użytkownika, jeśli nazwa użytkownika i hasło są prawidłowe. Jeśli użytkownik odwiedzi stronę internetową, sesja zostanie usunięta za pomocą funkcji session_unset (), aby sprawdzić, czy bieżą sesja jest zniszczona, czy nie.

// Sprawdź, czy formularz jest przesłany lub nie
if (isset ($ _ Post ['prześlij'])))

// Sprawdź, czy pola nazwy użytkownika i hasła są puste, czy nie
if (isset ($ _ Post ['un']) && isset ($ _ Post ['PW'])))

$ nazwa użytkownika = $ _POST ['un'];
$ hasło = $ _POST ['PW'];
// Sprawdź uwierzytelnianie użytkownika
if ($ nazwa użytkownika == 'admin' && $ hasło == 'secret')

// Rozpocznij sesję dla uwierzytelnionego użytkownika
session_start ();
Echo "";
// Sprawdź zmienną sesji
if (isset (sesja $ _ ['nazwa']))

// Wydrukuj wiadomość powitalną
Echo.
';;
// Unset sesja dla użytkownika
session_unset ();
// Sprawdź zmienną sesji po Unset
echo „Wartość sesji po Unset:”.$ _Session ['Nazwa']."
";

w przeciwnym razie

// Ustaw zmienną sesji
$ _Session ['name'] = 'administrator';
// Wydrukuj zmienną sesji
Echo „Zmienna sesji jest ustawiona dla”.$ _Session ['Nazwa']."
";

Echo "";

w przeciwnym razie

// Wydrukuj komunikat o błędzie dla nieprawidłowego użytkownika
echo „nazwa użytkownika lub hasło nie jest ustawione
";



w przeciwnym razie

?>



Przykład sesji unset



Nazwa użytkownika:



Hasło:









?>

Wyjście:
Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu. Użytkownik musi podać prawidłową nazwę użytkownika i hasło przed przesłaniem formularza. Zgodnie ze skryptem prawidłowa nazwa użytkownika to 'Admin„A hasło jest”sekret'.

Następujące dane wyjściowe pojawią się, jeśli poprawna nazwa użytkownika i hasło zostaną przesłane przez formularz, a dla użytkownika zostanie wygenerowana nowa sesja.

Następujące dane wyjściowe pojawią się, jeśli użytkownik ponownie odwiedzi stronę. Jeśli istnieje sesja dla użytkownika, użytkownik otrzyma wiadomość ”Witamy spowrotem„A funkcja session_unset () zniszczy sesję dla tego użytkownika. Komunikat ostrzegawczy pojawi się w wyjściu, ponieważ zmienna sesji zostanie niezdefiniowana po wywołaniu funkcji session_unset (). Ale ten komunikat ostrzegawczy można pominąć za pomocą error_reporting dyrektywa.

Zniszcz sesję PHP

Funkcja session_destroy () służy do niszczenia wszystkich zmiennych sesji odwiedzających. Po prostu niszczy dane sesji, ale zmienna super-globalna PHP, tablica $ _session zawiera dane sesji. Wartości tej tablicy zostaną usunięte, jeśli skrypt zostanie zakończony lub użytkownik zamknie sesję. Tablica $ _Session można utworzyć, inicjowanie pustej tablicy.

Plik cookie phpsessid może być przechowywany w komputerze użytkownika bez żadnych danych po zniszczeniu sesji, jeśli plik cookie przeglądarki jest włączony na komputerze użytkownika. W takim przypadku, gdy użytkownik ponownie odwiedzi stronę, zostanie wygenerowana nowa sesja dla użytkownika, nawet plik cookie Phpsessid istnieje. Składnia tej funkcji pokazano poniżej.

Składnia:

void session_destroy ();

Ta funkcja nie ma żadnego argumentu i nic nie zwraca.

Przykład-2: Niszczenie sesji za pomocą session_unset ()

Sposób niszczenia wszystkich rodzajów informacji o sesji za pomocą funkcji session_unset () pokazano w poniższym przykładzie. Utwórz plik PHP z następującym skryptem, aby utworzyć domyślną sesję dla ogólnych odwiedzających, ustaw nazwę sesji i datę ważności za pomocą funkcji setCookie () i wydrukuj nazwę sesji po zniszczeniu sesji za pomocą funkcji session_unset ().

// Rozpocznij sesję dla gościa
session_start ();
// Ustaw plik cookie sesji dla gościa
if (session_id () != "" || isset ($ _ cookie [session_name ()])))
setCookie (session_name (), ", time () - 42000, '/');
// Wydrukuj domyślną nazwę sesji
echo „domyślna nazwa sesji to”.session_name ()."
";
// Wydrukuj datę wygasania sesji
echo „Data wygaśnięcia sesji”.Data („D-M-y”, Time ()+5000000)."
";
// Zniszcz wszystkie informacje o sesji
session_destroy ();
if (session_id () == "")
Sesja echo „Zniszczyła się.";
?>

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu. Tutaj sesja została utworzona z czasem ważności i zniszczona później za pomocą funkcji session_destroy ().

Wniosek

W tym samouczku wyjaśniono dwa sposoby zniszczenia sesji PHP. Funkcje session_unset () i session_destroy () zostały użyte w tym samouczku do zniszczenia każdej istniejącej sesji. Deweloper PHP może użyć dowolnej z tych funkcji do niszczenia sesji w PHP.