Sessions

Info 
Door: trico Moeilijkheidsgraad: 2/3
Views:24.773Reacties: 11(Bekijken)
  Log in om zelf te reageren
 Waardering:6/10 (2 stemmen)



Inleiding:
Op veel websites kun je je registreren. Dat komt door het ledensysteem dat op de site staat. Om gegevens van jou te onthouden, worden vaak cookies gebruikt, die gegevens opslaat op jou computer. Behalve cookies is er ook een veiligere variant, deze slaat de speciale informatie op, op de webserver zelf. Hij zet bij zichzelf een soort cookie. Op jou PC komt dan een cookie met het sessie id. Aan de hand daarmee leest hij de cookie op de webserver. De sessions verdwijnen weer als je je browser sluit. Dat is het nadeel van sessions tegenover cookies. Maar dat is te wijzigen in de php.ini. Standaard is dit niet zo.


Sessions maken.
Als je met sessies gaat werken op je pagina, zorg dan altijd dat er boven aan de pagina dit komt te staan:
[color=blue]<?php
session_start();[/color]
Zo weet hij dat er op de pagina met sessions gewerkt word. Plaats je dit er niet boven, dan zullen de sessions ook niet werken. Je kunt sessies op 2 manieren maken.
Bij de eerste manier maak je een variable, en daarna zet je die variable zonder $ in [color=blue]session_register('varnaam');[/color]. Bijvoorbeeld willen wij de session 'naam' registreren. Daar gebruik je deze code voor:

#Code
1
2
3
4
5
<?php
session_start();
$naam = "trico";
session_register('naam');
?>

De inhoud van de sessie is nu: trico.

De 2e manier wordt meer gebruik, en is sneller):
#Code
1
2
3
4
<?php
session_start();
$_SESSION['naam'] = "trico";
?>

Nu is de inhoud van de sessie ook trico.


Inhoud tonen.
Om de inhoud van een sessie te tonen, wordt de volgende code gebruikt.
#Code
1
2
3
4
5
<?php
session_start();
$_SESSION['naam'] = "trico"; //Hier kan je ook de 1e manier gebruiken.
echo "Hallo,".$_SESSION['naam'];
?>

Nu komt er op het scherm te staan: Hallo, trico.

Sessie legen.
Om een sessie leeg te maken, kan je 2 manieren gebruiken: [color=blue]session_unset();[/color] en de superglobalfunctie.
Manier 1:
#Code
1
2
3
4
5
6
<?php
session_start();
$_SESSION['naam'] = "trico"; //hier kan je ook de 1e manier gebruiken.
session_unset('naam');
echo $_SESSION['naam'];
?>

Nu komt er niets op het scherm te staan, omdat de sessie geleegd is. (Een error zou wel kunnen :roll: )

Manier 2:
#Code
1
2
3
4
5
<?php
session_start();
$_SESSION['naam'] = "trico"; // hier kan je ook de 1e manier gebruiken.
$_SESSION['naam'] = NULL;
?>

Zo zou je ook een sessie kunnen legen.

Sessies verwijderen.
Omdat je niet veel meer aan die geleegde sessies hebt, kun je ze ook beter verwijderen. Ook dat kan weer op verschillende manieren.

Manier 1:
#Code
1
2
3
4
5
<?php
session_start();
$_SESSION['naam'] = "trico"; // hier kan je ook de 1e manier voor gebruiken.
session_unregister('naam');
?>

Nu is de sessie 'naam' verwijderd, en bestaat niet meer.

Manier 2:
#Code
1
2
3
4
5
<?php
session_start();
$_SESSION['naam'] = "trico"; // hier kan je ook de 1e manier voor gebruiken.
session_destroy();
?>

Nu valt de sessie 'naam' niet meer te vinden, tenzij hij weer opnieuw gezet wordt. ;)
Manier 3:
#Code
1
2
3
4
<?php
$_SESSION['naam'] = "trico"; // hier kan je ook de 1e manier voor gebruiken.
unset($_SESSION['naam']);
?>

Ook nu is de sessie 'naam' verwijderd :)

Slot.

Ik heb deze tutorial gemaakt voor WSM.be omdat ik zin had om iets te doen, en zo deed ik dat direct nuttig ;)
Tips en opmerkingen zijn altijd welkom, ik zal dit artikel nog wel eens verder aanpassen :)

(C) by trico for websitemaken.be

Update:
- Functie [color=blue]session_destroy();[/color] & extra informatie.

11 reacties
Onbekend lid Geplaatst op 18-11-2007 om 11:58
 

Spammer
Het werkt niet, hij maakt de session niet goed aan of leest hem niet goed uit. :( Weet iemand of ik een script fout heb gemaakt of dat het aan de host ligt?

<?php

ob_start();

session_start();
echo $_SESSION['test'];

if($_SESSION['test']=="gezien") {

} else {

echo "Bericht: --- dit bericht wordt maar een keer getoond";

$_SESSION['test'] = "gezien";

}

ob_end_flush();

?>

@edit: het werkt weer, ik had een aantal spaties voor <?php staan
stixxie Geplaatst op 30-07-2007 om 12:20
 

Regular
Haal de spatie's enters of wat er ook voor <?php staat.
Onbekend lid Geplaatst op 22-09-2006 om 21:45
 

Spammer

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:wampwwwtestlogin.php:4) in C:wampwwwtesthome.php on line 1
ik heb session_start(); helemaal bovenaan gezet en toch geeft hij de fout
kokx Geplaatst op 30-12-2005 om 13:43
 

Nieuwsposter
@woutrrr: je hebt volgensmij nog geen plaats op je computer waar de sessions bewaard worden.
Onbekend lid Geplaatst op 10-04-2005 om 20:01
 

Spammer
1. Je moet zorgen dat het pas waar tijdelijke bestanden komen bestaat

2. zet eens helemaal boven elke output (html of een enter ofzo)
#Code
1
<?php ob_start(); ?>
en helemaal onderaan
#Code
1
<?php ob_end_flush(); ?>

Pagina 1 2 3 

Om te reageren moet je ingelogd zijn.
Nog niet geregistreerd? Doe dat dan nu!


Terug naar gewone pagina

Websitemaken wordt gehost door Nucleus.be, uw Hosting Solution Builder