Registreren

    Informatie

    Het is heel gemakkelijk om lid te worden. Door je gegevens op te geven op de registratie pagina ontvang je automatisch een email met je inlog gegevens.

  • Registreer je hier

Aanmelden

    Informatie

    Omdat je niet aangemeld bent is het gebruikerspaneel niet beschikbaar. Vul hiernaast je gegevens in om gebruik te maken van het gebruikerspaneel.

Aanmeldformulier


Sessies

PHP is een scripttaal, die bedoeld is om op webservers dynamische webpagina's te creëren. PHP is in 1994 ontworpen door Rasmus Lerdorf, een senior software engineer bij IBM. Destijds was de taal duidelijk geïnspireerd door Perl.

Aanvankelijk stonden de letters PHP voor Personal Home Page (de volledige naam was Personal Home Page/Forms Interpreter, PHP/FI). Sinds PHP 3.0 is de betekenis een recursief acroniem geworden: PHP: Hypertext Preprocessor.

Sessies

Berichtdoor Theo » 03 Sep 2008 20:49

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
Code: Alles selecteren
<?php
session_start
();
?>

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 via session_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
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 $_SESSION["ingelogd"] op één staat.

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()

Terug naar PHP



Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast


cron