Sessies
1 bericht
• Pagina 1 van 1
Sessies
Inleiding
In dit artikel zal ik proberen om uit te leggen wat sessies zijn en hoe je ze kunt gebruiken.
Wat zijn sessies?
Sessies kun je vergelijken met cookies. Je kunt er allerlei gegevens in opslaan. Hierdoor kun je bijvoorbeeld mensen automatisch in laten loggen op je website. Er is echter één wezenlijk verschil tussen cookies en sessies. Cookies worden namelijk opgeslagen op de computer van de surfer en sessies niet. Hierdoor kun je cookies manipuleren, wat bij sessies niet kan. Een sessie wordt beëindigd zodra je de browser sluit, een cookie blijft bestaan tot dat hij verlopen is / vernietigd wordt
Hierdoor zijn sessies veiliger dan cookies. Een nadeel is, zoals eerder genoemd, dat de sessie verdwijnt zordra de browser gesloten wordt. Je kunt er dus slecht tijdelijk informatie in opslaan.
Hoe werken sessies?
Eerst moeten we aangeven dat we met sessies willen gaan werken. Dat doen we als volgt:
PHP
session_start() kun je het beste helemaal boven aan je pagina zetten om errors te voorkomen.
Vervolgens willen we natuurlijk gegevens in een sessievariabele zetten. Dat kunnen we op drie manieren doen. Namelijk viasession_register , $_SESSION of voor oude PHP versies $HTTP_SESSION_VARS . Hieronder laat ik voorbeelden zien. Deze scripts kun je opslaan als bijvoorbeeld pagina1.php.
PHP
PHP
PHP
Je ziet dat er ook een link staat naar pagina 2. Op pagina twee gaan we de sessievariabele weergeven. Dat kan alsvolgt.
PHP
Sessie waarden verwijderen
Je kunt de waarden in een sessie ook verwijderen. Afhankelijk van welke optie je gebruikt kun je de waarde verwijderen. Ik laat het zien aan de hand van een voorbeeld.
PHP
Je kunt ook in één keer de hele sessie verwijderen. Dat doen we als volgt.
PHP
Inlogsysteem maken
Om te laten zien waarvoor sessies echt handig zijn en in 'real-life' voor gebruikt worden laat ik nu zien hoe je een eenvoudig inlogscript kunt maken met gebruik van sessies.
We beginnen met een formulier om in te loggen (die staat bijvoorbeeld op index.php)
HTML
Zordra men op 'Inloggen' klikt wordt men doorgestuurd naar login.php. Hier gaan we alles controleren:
PHP
Nu is de gebruiker ingelogd en hebben we twee sessievariabelen aangemaakt. Nu gaat de gebruiker naar de volgende pagina. Hij/zij mag deze alleen bezoeken als hij/zij is ingelogd. Dat moet dus eerst gecontroleerd worden.
PHP
Op deze manier kun je op elke pagina controleren of$_SESSION["ingelogd"] op één staat.
Ten slotte willen we ook uit kunnen loggen. Wat we dan willen is dat de sessievariablen weggegooit worden.
PHP
In dit artikel zal ik proberen om uit te leggen wat sessies zijn en hoe je ze kunt gebruiken.
Wat zijn sessies?
Sessies kun je vergelijken met cookies. Je kunt er allerlei gegevens in opslaan. Hierdoor kun je bijvoorbeeld mensen automatisch in laten loggen op je website. Er is echter één wezenlijk verschil tussen cookies en sessies. Cookies worden namelijk opgeslagen op de computer van de surfer en sessies niet. Hierdoor kun je cookies manipuleren, wat bij sessies niet kan. Een sessie wordt beëindigd zodra je de browser sluit, een cookie blijft bestaan tot dat hij verlopen is / vernietigd wordt
Hierdoor zijn sessies veiliger dan cookies. Een nadeel is, zoals eerder genoemd, dat de sessie verdwijnt zordra de browser gesloten wordt. Je kunt er dus slecht tijdelijk informatie in opslaan.
Hoe werken sessies?
Eerst moeten we aangeven dat we met sessies willen gaan werken. Dat doen we als volgt:
PHP
- Code: Alles selecteren
<?php
session_start();
?>
Vervolgens willen we natuurlijk gegevens in een sessievariabele zetten. Dat kunnen we op drie manieren doen. Namelijk via
PHP
- Code: Alles selecteren
<?php
session_start();
// OPTIE 1
$naam = 'Ted';
session_register("naam"); // LET OP: zonder $-teken!
echo '<a href="pagina2.php">Pagina 2</a>';
?>
PHP
- Code: Alles selecteren
<?php
session_start();
// OPTIE 2
$_SESSION["naam"] = 'Ted';
echo '<a href="pagina2.php">Pagina 2</a>';
?>
PHP
- Code: Alles selecteren
<?php
session_start();
// OPTIE 3
$HTTP_SESSION_VARS["naam"] = 'Ted';
echo '<a href="pagina2.php">Pagina 2</a>';
?>
Je ziet dat er ook een link staat naar pagina 2. Op pagina twee gaan we de sessievariabele weergeven. Dat kan alsvolgt.
PHP
- Code: Alles selecteren
<?php
session_start();
// OPTIE 1
echo 'Mijn naam is ' . $naam;
// OPTIE 2
echo 'Mijn naam is ' . $_SESSION['naam'];
// OPTIE 3
echo 'Mijn naam is ' . $HTTP_SESSION_VARS["naam"];
?>
Sessie waarden verwijderen
Je kunt de waarden in een sessie ook verwijderen. Afhankelijk van welke optie je gebruikt kun je de waarde verwijderen. Ik laat het zien aan de hand van een voorbeeld.
PHP
- Code: Alles selecteren
<?php
session_start();
// OPTIE 1
session_unregister("naam");
// OPTIE 2
unset($_SESSION["naam"]);
// OPTIE 3
unset($HTTP_SESSION_VARS["naam"]);
?>
Je kunt ook in één keer de hele sessie verwijderen. Dat doen we als volgt.
PHP
- Code: Alles selecteren
<?php
session_start();
session_destroy();
?>
Inlogsysteem maken
Om te laten zien waarvoor sessies echt handig zijn en in 'real-life' voor gebruikt worden laat ik nu zien hoe je een eenvoudig inlogscript kunt maken met gebruik van sessies.
We beginnen met een formulier om in te loggen (die staat bijvoorbeeld op index.php)
HTML
- Code: Alles selecteren
<form action="login.php" method="post" name="inlogformulier">
<input type="text" name="inlognaam" />
<input type="password" name="inlogwachtwoord" />
<input type="submit" value="Inloggen!" />
</form>
Zordra men op 'Inloggen' klikt wordt men doorgestuurd naar login.php. Hier gaan we alles controleren:
PHP
- Code: Alles selecteren
<?php
// Sessie starten
session_start();
// Controleren of de persoon al is gelogd
if($_SESSION["ingelogd"] == 1)
die("U bent reeds ingelogd!");
// Controleren of men het formulier wel heeft verstuurd
if($_SERVER['REQUEST_METHOD'] != 'POST')
die("U mag deze pagina niet direct bezoeken!");
// Gegevens controleren
if(empty($_POST['inlognaam']) OR empty($_POST['inlogwachtwoord']))
die("Niet alle gegevens zijn ingevuld!");
if($_POST['inlognaam'] != 'naam' OR $_POST['inlogwachtwoord'] != 'wachtwoord')
die("Gegevens onjuist!");
// Alles is gecontroleerd en in orde. Nu gaan we sessievariabelen waarden toekennen
$_SESSION["ingelogd"] = 1;
$_SESSION["naam"] = $_POST["inlognaam"];
echo "U bent succesvol ingelogd als " . $_SESSION["naam"];
?>
Nu is de gebruiker ingelogd en hebben we twee sessievariabelen aangemaakt. Nu gaat de gebruiker naar de volgende pagina. Hij/zij mag deze alleen bezoeken als hij/zij is ingelogd. Dat moet dus eerst gecontroleerd worden.
PHP
- Code: Alles selecteren
<?php
// Sessie starten
session_start();
// Controleren of de persoon is ingelogd
if($_SESSION["ingelogd"] != 1)
die("U mag deze pagina alleen bezoeken wanneer u ingelogd bent!");
else
{
// De persoon is ingelogd. Hier kun je je pagina neer zetten.
?>
<html>
<head>
<title>Mijn beveiligde pagina</title>
</head>
<body>
<p>Welkom <?php echo $_SESSION["naam"]; ?>, op mijn beveiligde pagina.</p>
<p>Hier nog wat tekst.</p>
</body>
<?php
// de else afsluiten
}
?>
Op deze manier kun je op elke pagina controleren of
Ten slotte willen we ook uit kunnen loggen. Wat we dan willen is dat de sessievariablen weggegooit worden.
PHP
- Code: Alles selecteren
<?php
session_start();
if(session_destroy())
echo "U bent succesvol uitgelogd!";
?>
- Theo
- Oprichter
- Berichten: 1795
- Geregistreerd: 11 Jun 2005 17:43
- Woonplaats: in_array()
1 bericht
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast