Bien que cela ne soit pas obligatoire, il est recommandé d'utiliser l'extension .php pour les scripts PHP en version 4. Avec PHP3, on employait habituellement l'extension .php3.
Le principe est que chaque visiteur du site reçoit au
début de sa visite un identifiant unique. Cet identifiant
est ensuite transmis de page en page, afin de permettre de suivre
le déroulement de ses actions. Cela permet de savoir que
le visiteur A a commandé les articles A1, A2 et A3, alors
que le visiteur B a commandé B2 et B3.
Cet identifiant unique peut être stocké dans un
cookie, soit propagé par les URL longues.
L'utilisation des sessions de PHP4 peut se faire avec ou sans
cookies côté client. Afin de se prémunir
contre les navigateurs qui refusent les cookies, on peut
également transmettre l'identifiant de session dans les
URL longues des différentes pages du site.
Ainsi, entre deux pages consécutives, le lien se fera sur
http://monserveur.mondomaine.fr/application/...
.../mapage.php3?PHPSESSID=CA3F1261FB81395BB4A
Une session permet de gérer un contexte. Le contexte
est l'ensemble de plusieurs variables dont le contenu persiste
sur plusieurs pages de l'application (Voir l'exemple des sites
commerciaux, avec alimentation de 'Paniers' ou de 'Caddies').
Actuellement, les contextes peuvent contenir des variables
scalaires (chaînes, entiers, flottants, etc...) mais aussi
des tableaux (Array). En revanche, les contexte ne peuvent pas
contenir d'objets PHP (un objet PHP est une instance d'une classe
PHP).
Le fichier de configuration php.ini comporte désormais une section dédiée à la configuration de la gestion de sessions. On y trouve en particulier les paramètres suivants :
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 $.
<?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 ?>
Version initiale 1.0 - 16/01/2000