PHP- sessies
Een sessie is een manier om informatie (in variabelen) op te slaan voor gebruik op meerdere pagina's.
In tegenstelling tot een cookie wordt de informatie niet op de computer van de gebruiker opgeslagen.
Wat is een PHP-sessie?
Wanneer u met een toepassing werkt, opent u deze, brengt u enkele wijzigingen aan en sluit u deze vervolgens. Dit lijkt veel op een sessie. De computer weet wie je bent. Het weet wanneer u de toepassing start en wanneer u eindigt. Maar op internet is er één probleem: de webserver weet niet wie je bent of wat je doet, omdat het HTTP-adres de status niet behoudt.
Sessievariabelen lossen dit probleem op door gebruikersinformatie op te slaan voor gebruik op meerdere pagina's (bijv. gebruikersnaam, favoriete kleur, enz.). Standaard blijven sessievariabelen bestaan totdat de gebruiker de browser sluit.
Dus; Sessievariabelen bevatten informatie over één enkele gebruiker en zijn beschikbaar voor alle pagina's in één toepassing.
Tip: Als u een permanente opslag nodig heeft, kunt u de gegevens in een database opslaan .
Een PHP-sessie starten
Er wordt een sessie gestart met de session_start()
functie.
Sessievariabelen worden ingesteld met de globale PHP-variabele: $_SESSION.
Laten we nu een nieuwe pagina maken met de naam "demo_session1.php". Op deze pagina starten we een nieuwe PHP-sessie en stellen we enkele sessievariabelen in:
Voorbeeld
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
Opmerking: desession_start()
functie moet het allereerste zijn in uw document. Vóór eventuele HTML-tags.
Waarden van PHP-sessievariabelen ophalen
Vervolgens maken we een andere pagina aan met de naam "demo_session2.php". Vanaf deze pagina hebben we toegang tot de sessie-informatie die we op de eerste pagina hebben ingesteld ("demo_session1.php").
Merk op dat sessievariabelen niet afzonderlijk aan elke nieuwe pagina worden doorgegeven, maar dat ze worden opgehaald uit de sessie die we aan het begin van elke pagina openen ( session_start()
).
Merk ook op dat alle sessievariabelen worden opgeslagen in de globale $_SESSION-variabele:
Voorbeeld
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
Een andere manier om alle sessievariabelen voor een gebruikerssessie weer te geven, is door de volgende code uit te voeren:
Voorbeeld
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
Hoe werkt het? Hoe weet het dat ik het ben?
De meeste sessies stellen een gebruikerssleutel in op de computer van de gebruiker die er ongeveer zo uitziet: 765487cf34ert8dede5a562e4f3a7e12. Wanneer vervolgens een sessie op een andere pagina wordt geopend, wordt de computer gescand op een gebruikerssleutel. Als er een match is, krijgt hij toegang tot die sessie, zo niet, dan start hij een nieuwe sessie.
Een PHP-sessievariabele wijzigen
Om een sessievariabele te wijzigen, hoeft u deze alleen maar te overschrijven:
Voorbeeld
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
Een PHP-sessie vernietigen
Gebruik en om alle globale sessievariabelen te verwijderen en de sessie te session_unset()
vernietigen session_destroy()
:
Voorbeeld
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>