Hébergement du site en PHP et Mysql par WDMédia-hébergement
Vous aussi adpotez les éléPHPants de Vincent Pontier !  
CONCOURS
 
 
PLUS DE PHP
 
 
PLUS DE JAVASCRIPT
 
COMMENT CA MARCHE
 
 
EXPLIQUE-MOI
 
 
NEWS LETTER
 

 
PARTENAIRES
 
Découvrez scriptsphp.org
Découvrez phpteam.net
Tout sur les expressions régulières
IE sucks :-)
 
DESIGN DU SITE
 
Simple comme les sessions

Simple comme les sessions

Dans cet article, je vais tenter d'expliquer le plus clairement possible ce que sont les sessions et comment les utiliser avec PHP.

C'est quoi une session ?

C'est la période de temps qui s'écoule entre l'ouverture de l'application (arrivée sur le site) et sa fermeture (départ du site). Ainsi, lorsqu'un utilisateur ouvre à nouveau l'application après plusieurs minutes, jours, mois ou années, il démarre une nouvelle session d'utilisation.

Pendant cette période de temps, il peut être intéressant de conserver des données pour les utiliser sur d'autres pages.

Attention : Il ne faut pas confondre les données d'une session avec les données utilisateur. Les données de session sont volatiles et disparaissent lorsque l'utilisateur quitte l'application, tandis que les données utilisateur sont des informations sauvegardées qui peuvent être manipulées indéfiniment entre plusieurs sessions.

Oui, mais techniquement qu'est-ce que c'est ?

Pour une application non-web comme par exemple "Photoshop®", chaque utilisateur exécute le programme sur son propre ordinateur. Lorsque l'utilisateur choisit une couleur, celle-ci est mémorisée indépendamment des autres utilisateurs puisqu'ils ne sont pas liés.

Pour une application Web, c'est très différent car l'application est exécutée sur le serveur où plusieurs utilisateurs interagissent en même temps au moyen de leur navigateur. Imaginez qu'un utilisateur demande à changer la couleur du fond en rouge et qu'une fraction de seconde plus tard un autre utilisateur demande un fond bleu, celui-ci ne doit pas modifier la couleur de l'utilisateur précédent. Il est donc important que l'application soit en mesure de faire la différence entre les utilisateurs en attribuant une couleur différente pour chacun d'entre eux.

Malheureusement, il est impossible de savoir quel utilisateur effectue une demande de traitement (une requête) entre deux "clics" si le navigateur n'envoie pas d'informations pour les différencier (l'adresse IP n'étant pas fiable).

Pour résoudre ce problème, à la première connexion, on génère un identifiant aléatoire de grande taille (pour éviter que deux utilisateurs aient le même) et à chaque requête, le navigateur envoie cet identifiant. Cet identifiant peut être transmit par un cookie, dans un lien, dans un champ de formulaire, ... etc.

Au moyen de cet identifiant, le serveur reprend les données qu'il avait sauvegardées, les rendant ainsi disponibles pour l'application. Si l'application modifie ces données, le serveur les sauvegarde.

Remarque : Comme le serveur ne peut pas savoir si l'utilisateur a quitté l'application, les données de sessions sont automatiquement détruites après une certaine période d'inactivité. C'est ce que l'on appelle la durée d'expiration. Pour PHP, la durée d'expiration est d'environ 24 minutes par défaut.

Oui, mais techniquement, en PHP, je fais comment ??

En PHP, c'est ultra-simple, il suffit d'utiliser la fonction "session_start()" dans tous vos script et avant tout envoi de texte (donc pas de code HTML avant la balise "<?php"). Ensuite, toutes les données que vous placez dans le tableau $_SESSION seront restituées dans les autres pages. Il n'y a rien de plus à faire !! PHP gère lui même la création de l'identifiant de session et sa transmission de page en page.

Voici un petit exemple :

page1.php
<?php
session_start
();
$_SESSION['nom'] = 'Charlie';
?><html>
<head>
  <title>Page 1</title>
</head>
<body>
<p><a href="page2.php">Aller à la page 2</a></p>
</body>
</html>

page2.php
<?php
session_start
();
?><html>
<head>
  <title>Page 2</title>
</head>
<body>
<p>Le nom de mon furet est
<?php echo $_SESSION['nom'] ?></p>
<p><a href="page1.php">Revenir à la page 1</a></p>
</body>
</html>

Voilà, simple non ?

Remarque : Pour effacer une donnée de session, il suffit d'utiliser le mot-clef "unset" et pour tester si une variable de session existe, il faut utiliser le mot-clef "isset" (ou "empty"). En gros, on manipule le tableau de session comme un tableau normal, à la différence près que le contenu de celui-ci n'est pas effacé quand on passe d'une page à l'autre.


Revenir aux mises au point



Ajouter une réponse
Nom
Email
Titre

Mise en forme : gras = [b]...[/b], italic = [i]...[/i], souligné = [u]...[/u], citation = [quote]...[/quote], lien = [url]liens_externe[/url] ou [url nom=texte]liens_externe[/url], code source : [code]...[/code]

Mémoriser mon nom et mon email : Oui Non
www.phpdebutant.org © 2017 - L'équipe de phpDebutant - Hébergement : WDMédia-hébergement
DEBUTEZ !
 
  0.  Introduction
  1.  Afficher une phrase ou une image
  2.  Afficher la date et l'heure
  3.  PHP dans du code HTML
  4.  La concaténation
  5.  Récupérer les valeurs d'un formulaire
  6.  Les structures de contrôle
  7.  Ecrire et lire dans un fichier texte
  8.  Les fonctions utilisateurs
  9.  Les variables d'environnement
  10.  Quelques fonctions utiles
  11.  SQL/MySQL (Create, Alter & Drop)
  12.  SQL/MySQL (Insert et Select)
  13.  SQL/MySQL (Delete et Update)
  14.  SQL/MySQL (Where)
  15.  Fonctions PHP pour mySQL
  16.  Interroger une table MySQL
  17.  Alimenter une ou plusieurs tables mySQL
  18.  Les pseudos-frames
  19.  Les sessions php4
  20.  Affichage page par page
  21.  Images dynamiques
  22.  Ca marche pas ?
  23.  Variables globales à OFF
  24.  Les variables dynamiques