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
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é :’-))