02
Déc
2002

Les sessions PHP

Comment manipule-t-on une session ?

session_start()

Comme vu précédemment, cette fonction, qui ne prend pas d'argument, permet d'initialiser une session, ou de continuer une session déjà existante.

session_register(nom1, nom2, ...)

Cette fonction permet de stocker une variable dans une session. Son emploi demeure simple, il suffit de passer le nom de la variable à stocker en tant qu'argument.

<?php
    session_start
();
    
$login 'maverick';
    
$password '1234';
    
session_register('login''password');
?>

Cet exemple stockera les variables $login et $password dans la session, et par cette méthode, elles seront accessibles pour les autres pages affichées durant cette session.
A noter cependant que l'on ne peut passer à la fonction session_register que des variables globales, et non locales.

<?php
    
function test_session() {
        
$variable '1234';
        
session_register('variable');
    }
    
test_session();
    echo 
"var de session : {$_SESSION['variable']}";
?>

Le code ci-dessus ne marchera pas, alors que celui ci-dessous fonctionnera :

<?php
    
function test_session() {
        
$GLOBALS['variable'] = '1234';
        
session_register('variable');
    }
    
test_session();
    echo 
"var de session : {$_SESSION['variable']}";
?>
session_destroy()

Si l'on peut créer une session, il faut pouvoir la détruire. c'est simple avec cette fonction :), il suffit de l'appeler et la session en cours sera supprimée.
Il faut tout de même remarquer que les variables globales apportées par cette session avant sa destruction ne sont pas supprimées. Pour cela, il faut utiliser la fonction session_unset().

session_unset()

Cette fonction, comme dit plus haut, détruit les variables apportées par la session. Pas d'argument, juste un simple appel.

Comment accéder aux variables de sessions ?

Vous avez à votre disposition 2 méthodes pour manipuler les variables de session.
Vous pouvez utiliser directement le nom de la variable que vous avez passée dans la fonction session_register. Mais vous pouvez aussi y accéder via le tableau $_SESSION['nom_de_variable'].
De même, plutôt que d'utiliser session_register pour incorporer une variable dans la session, il est également possible de la définir via $_SESSION['nom'].
Toutefois, si vous décidez d'utiliser cette méthode, il ne faudra plus utiliser la fonction session_register(), session_is_registered() ou session_unregister().

session_is_registered()

Cette fonction, vous l'aurez compris, permet de tester si une variable fait partie d'une session. Si, comme précisé précédemment, vous avez utilisé $_SESSION, il vous suffira de faire :

<?php
    
isset($_SESSION['ma_variable']);
?>
session_unregister()

Dans la même série, cette fonction permet de détruire une variable de session. Son équivalent est unset.

<?php
    session_unregister
('ma_variable');
?>

et :

<?php
    
unset($_SESSION['ma_variable']);
?>

Il s'agit des fonctions dont vous vous servirez le plus avec les sessions. Voici tout de même, pour votre culture générale, quelques fonctions qui apparaitront de temps en temps.

session_name([opt nom])

Elle vous permet de déterminer le nom de la variable transmise via cookie ou via URL (par défaut PHPSESSID). Si vous lui passez un argument, elle changera le nom par défaut. (à utiliser avant d'initialiser une session)

session_id([opt id])

Comme vous avez récupéré le nom de la variable, il peut être intéressant de connaître sa valeur non ? Voilà, avec session_id, vous le saurez :) De même, si un argument lui est passé, elle redéfini l'identifiant de session.

Posté par Mathieu LESNIAK à 13:15 dans la catégorie Articles | RSS catégorie
Tag(s) associé(s) :
Partager cet article : Ajouter en favori sur KreuZZPoster cet article sur ScoopeoPoster cet article sur FuzzPoster cet article sur diggAjouter en favori sur Del.icio.usPoster cet article sur reddit
Grek
02/11/02 19:29:02

Super article ! Des articles de cette qualité manquent sur le net... S'il était encore un peu plus détaillé je dois dire que ça arrangerais les débutants comme moi. Au fait, pourriez-vous mettre votre script d'espace membre en complement de l'article ? Ce serait super cool... Je vais maintenant essayer de mettre en pratique le contenu de ce super article BbByYyEeE

ostead
07/11/02 10:12:28

Je trouve l'article super cool, quoi qu'un peu rapide comme le diqait au dessus de moi Grek, en tout cas pour un débutant comme moi. Je vous remercie tout de même car il m'est d'une aide précieuse!! @+

Ostead

Izno
03/06/03 15:05:04

No comment, le cours est niquel, les exemples simple et concret. Pas de temps perdu dans l'inutile ou l'incomprehensible. Bravo...

ps: dommage que le pdf est quelques loupés de mise page.(supportable)

leon
03/11/03 10:49:17

merci pour l'article, je pense que la réponse à mon problème actuel est dans

... Le code ci-dessus ne marchera pas, alors que celui ci-dessous fonctionnera : <?php function test_session() { $GLOBALS['variable'] = '1234'; session_register('variable'); } ... mes variables passaient bien avec le easyphp 1.6 installé mais plus avec la version 1.7 comme le disait Boris Vian : y'a quelque chose qui cloche la dedant, j'y retourne immediatement...

bien à vous leon

jeanmisericorde
04/11/03 10:58:37

Bonjour, excellent article en effet ! Si bien concu que je voudrai vous soumettre mon code, pourtant calqué sur ce cours.

voici comment je crée une session : session_start(); $id_ok = $row_ident['id']; $pseudo_ok = $row_ident['pseudo']; $secret_ok = $row_ident['secret']; $nom_ok = $row_ident['nom']; $prenom_ok = $row_ident['prenom']; session_register("id_ok"); session_register("pseudo_ok"); session_register("secret_ok"); session_register("nom_ok"); session_register("prenom_ok"); header("Location: ../index_membre.php?".session_name()."=".session_id()); exit;

et voici comment j'accède aux variables : echo $_SESSION["prenom_ok"]." ".$_SESSION["nom_ok"];

Probleme : ce dernier code n'affiche rien ! merci de me débloquer

black_stitch
01/03/04 11:58:40

j'ai exactement la meme couille que jeanmisericorde, a savoir que j'arrive a enregistrer ma variable session dans une page, mais une fois ma page redirigée je perd ma varaible session... et je m'arrache le cerveau a essayer de trouver d'ou ca peu bien venir, donc si qqubn a la soluce ca m'aiderai trop ! Merci

black_stitch
01/03/04 12:20:16

Pour rectification, je crois qu'il enregistre quedal, je vous met mon code, si vous voyez une merde ... <?PHP session_start();

include "../page/connection.php"; //récupération des identifiants de la connection envoyés par la feuille de connection if (isset($_GET['login'])) $login=$_GET['login']; if (isset($_POST['login'])) $login=$_POST['login'];

if (isset($_POST['pass'])) $pass=$_POST['pass']; if (isset($_GET['pass'])) $pass=$_GET['pass']; //codage du mot de pass $password=md5($pass);

//selection des identifiants dans la base $requeteSelectIdent="select * from utilisateur where login='$login' and pass='$password'"; //execution de la requete $requeteExec=mysql_query($requeteSelectIdent); //identification de l'entrant $result=mysql_fetch_array($requeteExec); //si la requete renvoie qqchose if ($result[0]) { //récupération du login $_SESSION['login']=$login; //récupération du mot de pass $_SESSION['pass']=$pass; //enregistrement des variables sessions session_register('login', 'pass'); header("location:../index.php"); }

(j'ai rajouté des commentaires pour ceux que ca interesses) :) Merci

Kevbrok
13/03/04 01:54:25

Dans le code pour savoir qu est en ligne, sois:

<?php if ( $d = opendir( session_save_path() ) ) { $count = 0; $session_timeout = 3 * 60; while ( false !== ( $file = readdir( $d ) ) ) { if ( $file != '.' && $file != '..' ) { if ( time()- fileatime(session_save_path() . '/' . $file) < $session_timeout ) { $count++; } } } } echo $count; ?>

D'ou vient la variable $d ?? :S

OuPinaise
07/05/04 10:41:49

Pareil que Leon pour le GLOBALS !!!

je crois que mon script ne marchait pas à cause de ça. Thx a lot dude !

sunshine
sunshine
25/08/04 02:35:31

coucou tout le monde, vous allez peut-être me trouver rabas-joie, mais je n'arrive pas, mais alors pas du tout à faire fonctionner les sessions. je ne sais absolument pas comment me débrouiller pour les faire marcher... le truc c'est que je pensais pouvoir les utiliser dans le cas suivant: un utilisateur se log, et ça ouvre une session..! le problême c'est que je ne sais pas du tout comment faire. le formulaire est là, tout est là, seulement, au moment où il s'agit des sessions, y a plus rien ! merci de m'éclairer, j'ai hâte d'arriver à faire tout ça :)

michel
michel
18/09/06 16:28:13

hello tout le monde, c'est super ce petit tuot sur les sessions!!un grand merci

fu
20/09/06 17:34:42

help

hamaz
hamaz
11/04/07 14:11:09

concevoir 1 site web pour la vente en ligne ça demande dy ajouter le script des session ;et moi jy connai rien en ça pour le moment .alors 1 peut d'eclairage et merci.

sou
sou
10/05/07 19:51:34

c'est génial

tafa
tafa
25/05/07 23:22:57

Je voudrais insérer une variable globale dans un champs d'une table mysql.Le champs est dans un un formulaire qui existe sur une autre page que la page principale. je voudrais que vous m'aidiez si vous avez une idée. Merci

tafa
tafa
25/05/07 23:25:54

Je voudrais insérer une variable globale dans un champs d'une table mysql.Le champs est dans un un formulaire qui existe sur une autre page que la page principale. je voudrais que vous m'aidiez si vous avez une idée. Merci

sly
sly
05/09/07 13:11:15

il manque un session_write_close() en fin de script pour que les données soient effectivement stockées...

rachid
08/09/07 12:21:36

salut

tibob123
22/09/07 15:02:33

VIVe site du zero :P

hichem
23/01/08 22:39:39

bien

Les commentaires ne sont pas autorisés pour ce billet