<?php
session_start();
?>
<html>
<head>
<link rel="stylesheet" href="../../styles/collegestyle.css" type="text/css">
<title>Berichtenteller</title>
</head>
<body>
<h1>Berichtenteller</h1>
<?php
if( $_SESSION["nummer"] > 0 ) $_SESSION["nummer"]++;
else $_SESSION["nummer"]=1;
if($_POST["action"] == "reset") session_unregister("nummer");
?>
<form method="post">
<button type="submit" name="action" value="next" >Volgende</button>
<button type="submit" name="action" value="reset" >Reset</button>
</form>
<?php
echo "Berichtnummer: " . $_SESSION["nummer"];
?>
</body>
</html>
Helemaal bovenaan de file start je een sessie met session_start( ); Dat moet helemaal bovenin staan, nog vóór dingen als <html> omdat het diverse HTTP headers verstuurt. Je hoeft niet te weten wat HTTP headers zijn, als je session_start( ) maar bovenaan zet.
Een sessie kun je zien als een verzameling variabelen die blijven bestaan zo lang je je browser niet afsluit of de sessie vernietigt met session_destroy( ). Je weet dat je uit een formulier ook variabelen kunt halen met bv. $_POST["username"] en je kunt in PHP zelf variabelen maken zoals $firstname, maar zodra je doorklikt naar een andere webpagina ben je die variabelen weer kwijt. Bij gebruik van een sessie kun je variabelen maken zoals $_SESSION["firstname"] en die blijft wel bestaan als je naar een andere pagina doorklikt.
In het voorbeeld zie je een sessie-variabele $_SESSION["nummer"]. Eerst wordt gekeken of die al bestaat door te kijken of hij een waarde groter dan 0 heeft. Een variabele die nog niet bestaat zal nooit een waarde groter dan 0 hebben. Een andere manier om te zien of een variabele bestaat is isset("nummer");
Als $_SESSION["nummer"] nog niet bestaat krijgt hij de waarde 1. Dat maakt ook automatisch dat de variabele vanaf dat moment bestaat en een waarde groter dan 0 heeft.
Als $_SESSION["nummer"] groter dan 0 is wordt er 1 bij opgeteld. Als laatste regel van het script zie je
echo "Berichtnummer: " . $_SESSION["nummer"];
Hiermee zie je de waarde van $_SESSION["nummer"].
O ja, dan staat er nog iets met action en reset. Het formulier bevat twee knoppen: eentje om de teller te laten doortellen en eentje om opnieuw te beginnen. Beide hebben name="action". Beide versturen het formulier. Dat is vooral bedoeld om de teller te laten doortellen. Maar als je op reset drukt wordt de variabele $_SESSION["nummer"] vernietigd en begint de teller opnieuw.