Sessions:Mise en oeuvre
Un article de WikiTuto.
Sommaire |
Listes des fonctions
La première opération consiste, lors de l'accès au site à créer une session, et à transmettre son identifiant au navigateur. Ceci se fait par l'appel à la fonction session_start(), sans lui passer aucun paramètre. Cette fonction doit être placée en tout début de script. En effet, puisqu'elle génère un cookie, elle doit être placée avant l'envoi des headers HTTP, faute de quoi, une erreur serait signalée.
Dès ce moment, la session est créée. Dans la suite du script, l'appel à session_id() retourne la valeur de cet identifiant unique, qui peut ressembler à : CA3F1261FB81395BB4A
Pour transmettre la valeur d'une variable d'une page à une autre, il faut spécifier que l'on souhaite faire enregistrer cette variable en tant que variable de session. Pour cela, on utilise la fonction session_register(), à laquelle on passe en paramètre le nom de la variable, débarassé de son préfixe $.
Exemple
<?php
// Session créée ? Si Non, en créer une nouvelle
if ($PHPSESSID)
session_start($PHPSESSID);
else
session_start();
?>
<!-- Début du Html, envoi des entêtes par le serveur Http -->
<html>
<head>
<title>PHP4 Session Start</title>
</head>
<body>
<h1>PAGE 1 : PHP4 Session Start</h1>
<hr>
<br>
<!-- Affichage de la clé de session, enregistrement d'une variable -->
<?php
$sid = session_id();
$sname = session_name();
echo "Votre clé de session est : $sid <br>Le nom de cette session est : $sname <br>\n";
// Ajout de la variable $venant_depuis au contexte de la session
$venant_depuis = $HTTP_REFERER;
session_register("venant_depuis"); // La variable est désormais dans le contexte
?>
<br>
<hr>
<center>
<a href="start_shopping.php">Cliquer ici pour commencer votre shopping</a>
</center>
</body>
</html>
Pour passer la clé de session à la page suivante, il est conseillé de placer la clé de session dans l'URL de la page de destination. PHP4 propose un raccourci, afin de rendre cette écriture plus concise et plus facile à interprêter. Il s'agit d'une écriture condensée, calquée sur la syntaxe des ASP de Microsoft. Le lien vers la seconde page s'écrira donc comme ceci : <?=SID?>
// Ecriture courte <a href="start_shopping.php?<?=SID?>">Commencer votre shopping</a> // Ecriture longue <a href="start_shopping.php?session_name()=session_id()">Commencer votre shopping</a>
Par la suite, toute autre page utilisée dans la session devra répercuter la clé de session sur les pages suivantes. Toute page devra commencer par les lignes suivantes :
<?php if ($PHPSESSID) session_start($PHPSESSID); else session_start(); // Normalement, on ne doit pas créer de session en plein milieu du site ?>



