BlueGEEK Journal

Accueil > Manip’s > PHP > Leçons PHP > PHP : Gestion facile des Sessions en PHP

PHP, Session

PHP : Gestion facile des Sessions en PHP

dimanche 24 septembre 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

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

Messages