BlueGEEK Journal

Accueil > Manip’s > PHP > Leçons PHP > Maitriser l’Authentification et les Sessions PHP

PHP, Sessions

Maitriser l’Authentification et les Sessions PHP

mardi 3 octobre 2006, par bluegyn_spip

La gestion des sessions

- est un concept simple et puissant et assez mal expliqué sur le WEB

- La page d’accueil génère un Identificateur de Session UNIQUE et aléatoire qui est donc différent à chaque connexion,

On appelle session le temps passé entre l’ouverture et la fermeture du navigateur

La génération de d’identificateur et de la session se fait par la commande

session_start()

- Celle ci doit être placée tout en haut de la page, à la 1ere ligne, avant toute balise HTML

- Un numéro d’identification unique peut être récupéré par la commande

session_id()

- De cette façon

$sid = session_id() ;

Il prend habituellement cette forme

- "667a4b925f2f01610ff1e4643e5e218a"

  • (exemple de numéro de session aléatoire)

Le principe est de

- propager cette identificateur de session (SID) récupéré sur la première page à travers chaque nouvelle page visitée par son URL et de le comparer à l’identificateur de session interne automatiquement généré par chaque page qui s’ouvre au cours de la même session -Normalement les 2 doivent être identiques, puisque par définition la session est unique et que tous les numéros de session générés par toutes les pages visitées entre l’ouverture et la fermeture du navigateur sont rigoureusement identiques

- Pour permettre à n’importe quelle page visitée pendant une session de fournir son numéro unique l’instruction est

session_start()

- Ce n’est donc pas trop compliqué, c’est la même que celle qui crée la session !!!

- Et logiquement pour lire le numéro de session d’une page visitée, devinez la commande ?

session_id()

Bingo !

EXEMPLE PRATIQUE

Page1 appelle Page2

- Je veux que mon visiteur ne puisse pas ouvrir la page2 s’il ne s’est pas identifié en page1

En clair

- Seule la page1 est autorisée à ouvrir la page2


PAGE1.PHP

<?PHP



session_start();

$id=session_id();



J'appelle la page 2 en propageant l'Identificateur par l'URL



<A HREF="PAGE2.PHP?id=$id">Ouvrir la Page 2</A>

_______________________î



?>

PAGE2.PHP

session_start();

$id_interne=session_id();



Je récupère l'identificateur passé dans l'URL



$id_url = $_GET ['id'] ;

___________________î



Je compare



if ($id_interne == $id_url)

- Si les 2 Numéros sont les mêmes,

- Cela veut dire que les 2 pages font partie de la même session,

- Et que si le visiteur a pu ouvrir la première porte, alors on lui autorisera automatiquement toutes les suivantes.


Ce n’était pas très compliqué :’-))