02
Déc
2002

Les sessions PHP

Combien d'entre vous se sont déjà demandés comment passer des infos pour un visiteur donné de page en page ? Et qui plus est, de manière sécurisée ? Vous pouvez avouer, si jamais vous avez décidé un jour de mettre en place un espace membre avec des fonctionnalités avancées, il est nécessaire d'identifier ce dit membre...

PHP (dans les versions >= 4) possède un mécanisme automatique et très pratique pour réaliser ceci : les sessions.
A noter cependant que si vous êtes encore en PHP3, vous pouvez utiliser la PHPLib Nous allons voir dans cet article comment manipuler les sessions avec quelques exemples d'applications.

Au programme :

  • Les sessions, c'est quoi ?
  • Comment manipule-t-on une session ?
  • Quelques exemples et conclusion

Les sessions, c'est quoi ?

1 - Qu'est-ce qu'une session ?

Une session est un mécanisme assez simple géré de manière transparente par le PHP. A chaque fois qu'une session est démarrée (3 méthodes sont possibles, comme nous le verront plus tard), un identifiant unique est attribué au visiteur. Cet identifiant permettra de le distinguer autres utilisateurs tout au long de sa session. Pendant la session, on pourra à loisir définir des variables qui "suivront le visiteur".
A chaque chargement de page, ces variables seront sauvegardées sous forme sérialisée dans un fichier texte portant le nom de la session.
(Ces fichiers sont, en général stockés dans /tmp sur un système unix)

L'identifiant unique de session peut se transmettre de 2 façons :

- cookie :
Un cookie est posé au debut de session et contient la variable PHPSESSID faisant référence à l'identifiant de session.
- URL : Le paramètre de session PHPSESSID ou SID est à inclure sur chaque lien de la page afin de propager la session aux autres pages.

La première solution est contraignante si vos utilisateurs refusent les cookies, mais reste tout de même la plus simple à mettre en place.
A savoir tout de même que si PHP est compilé avec --enable-trans-sid, les urls de la page seront modifiées par PHP pour rajouter l'identifiant de session.

A noter également que pour une création de cookie de session, l'appel de la fonction doit se situé avant toute autre sortie vers le navigateur, comme les fonctions header et setcookie.

2 - Que peut on faire avec un session ? (quelles fonctions sont disponibles pour manipuler les sessions)

Avant d'utiliser une session, il faut d'abord l'initialiser.
Comme dit précédemment, il existe 3 manières de démarrer une session :

  • PHP est configuré pour démarrer automatiquement les sessions

PHP peut être configuré de tel façon, via la php.ini, qu'il démarrera une session à chaque nouveau visiteur du site.

Pour activer cette option, il suffit de passer le paramètre de configuration session.auto_start à 1 dans la configuration.
C'est la façon la plus simple, mais pas forcément la plus répandue chez les hébergeurs.

  • Démarrer explicitement une session

PHP possède la fonction session_start(), qui , comme son nom l'indique, permet de démarrer une session.
Si le visiteur affiche pour la première fois une page de votre site depuis qu'il a lancé son navigateur, un identifiant lui est attribue.
Autrement, si il navigue depuis quelques pages, l'identifiant de session est récupéré et les variables lui étant associées sont accessibles.

  • Démarrer implicitement une session

On peut se passer du démarrage de session avec session_start() si l'on utilise la fonction session_register(), qui permet de stocker une variable dans une session.
Par cette méthode, PHP tente de déterminer si une session est active, et si ce n'est pas le cas, il la démarre avant de stocker la variable.

Voyons maintenant d'un peu plus près les fonctions permettant de manipuler les sessions.

Lire la suite »
Posté par Mathieu LESNIAK à 13:15 dans la catégorie Articles | RSS catégorie
Tag(s) associé(s) :