Kursy

Sesje w PHP

Sesje

Sesje potrzebne są do przekazywania zmiennych z jednej strony do drugiej, ale tylko dla jednego użytkownika. Przykładowo, jeżeli chcemy stworzyć skrypt autoryzacji (zawierający login i hasło), dzięki któremu na stronie będziemy mieli dostęp do większej ilości materiałów itd. to powinniśmy użyć zmiennych sesyjnych, które będą przesyłane do kolejnych stron. Zmienne sesyjne przechowywane są po stronie serwera, więc jakiekolwiek przejście do strony niesesyjnej (nie zawierającej odwołania do sesji bądź też nie rejestrujące żadnej zmiennej) kończyć się będzie utratą informacji zawartych w zmiennych.

Podstawową funkcją do tworzenia sesji jest session_start(). Służy ona do otwarcia sesji, czyli udostępnieniu skryptowi wszystkich zmiennych zarejestrowanych w sesji. Do rejestracji zmiennych służy funkcja session_register(). Jej parametrami jest nazwa zmiennej ujęta w cudzysłowach. Niestety zarejestrowane na poprzedniej stronie zmienne sesyjne nie są od razu rejestrowane na aktualnej, co znaczy że w każdym skrypcie obsługującym sesje musimy rejestrować zmienne sesyjne.

Ostatnią funkcją potrzebną ci do używania sesji jest session_unregister(), która służy do usuwania zmiennych sesyjnych. Jej parametrem jest zmienna, którą ma usunąć. Więcej o funkcjach obsługi sesji znajdziesz w manualu PHP. A teraz przykład użycia sesji. Poniższy skrypt pokazuje, ile razy odwiedziłeś już tą stronę (oczywiście zlicza tylko odświerzenia strony!).

<?PHP
session_start();
if (!isset($il)) $il = 0;
session_register("il");
++$il;
echo $il;
?> 

Jako zmienną sesyjną rejestrować można zmienne dowolnego typu, tak więc oprócz liczb także łańcuchy, tablice i obiekty (o ile zdefiniowana jest klasa obsługująca obiekt).

A teraz jakiś bardziej przydatny skrypt - autoryzacja. Będzie to jeden plik ze skryptem obsługującym wszystkie potrzebne operacje. W naszym przykładzie będzie można dodać do licznika jeden, zmienić linijkę tekstu. Oto kod:

<?PHP
class usery {
var $login;
var $haslo;
var $licznik = 0;
var $napis = "To jest napis";
}
session_start();
if (!isset($krok)) {
session_unregister("user");
echo 'Oto skrypt autoryzacji. Potrzebne informacje:<br>
Login: user<br>
Hasło: haslo<br>
<form method="post" action="7_2.php">
<input type="hidden" name="krok" value="1">
Login: <input type="text" name="login"><br>
Hasło: <input type="password" name="haslo"><br>
<input type="submit" value=" OK ">
</form>';
} elseif($krok=="1") {
if (!isset($user)) {
$user = new usery();
$user->login = $login;
$user->haslo = $haslo;
}
session_register("user");
if ($user->login=="user"&&$user->haslo=="haslo") {
echo '<a href="7_2.php?krok=2">Dodaj do licznika!</a><br>
Aktualny stan licznika: '.$user->licznik.'<br>
<a href="7_2.php?krok=3">Zobacz napis i go zmien!</a><br>
<a href="7_2.php?krok=4">Wyloguj się!</a><br>';
}
} elseif($krok=="2") {
session_register("user");
if ($user->login=="user"&&$user->haslo=="haslo") {
++$user->licznik;
echo '<meta http-equiv="refresh" content="0; URL=7_2.php?krok=1">';
}
} elseif($krok=="3") {
session_register("user");
if ($user->login=="user"&&$user->haslo=="haslo") {
echo $user->napis;
echo '<br><a href="7_2.php?krok=1">Powrót na główną stronę</a>';
echo '<p><form method="post" action="7_2.php">
<input type="hidden" name="krok" value="5">
<input type="text" name="napis"><br>
<input type="submit" value=" OK ">
</form>';
}
} elseif($krok=="4") {
session_unregister("user");
} elseif($krok=="5") {
session_register("user");
if ($user->login=="user"&&$user->haslo=="haslo") {
$user->napis=$napis;
echo '<meta http-equiv="refresh" content="0; URL=7_2.php?krok=1">';
}
}
?>

To chyba wszystko na temat zmiennych sesyjnych. Więcej informacji na temat sesji znajdziesz w manualu PHP.