Outils pour utilisateurs

Outils du site


bloc3:sessions

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloc3:sessions [2023/03/29 13:20] – [Les sessions] adminbloc3:sessions [2023/04/11 12:02] (Version actuelle) – [Utiliser les variables de session] admin
Ligne 1: Ligne 1:
 ====== Les sessions ====== ====== Les sessions ======
  
-En programmation Web, les échanges entre le client et le serveur sont dits "**Stateless**". C'est à dire qu'il n'y a pas de données mémorisées entre deux requêtes distinctes d'un internaute. \\ Les sessions sont un moyen technique qui vient combler cette insuffisance en permettant de stocker durablement des données individuelles pour chaque utilisateur. Elles peuvent être utilisées pour faire persister des informations entre plusieurs pages.+En programmation Web, les échanges entre le client et le serveur sont dits "**Stateless**". C'est à dire qu'il n'y a aucune donnée mémorisée entre deux requêtes distinctes d'un internaute. \\ Les sessions sont un moyen technique qui vient combler cette insuffisance en permettant de stocker durablement des données individuelles pour chaque utilisateur. Elles peuvent être utilisées pour faire persister des informations entre plusieurs pages.
 ===== Les cookies ===== ===== Les cookies =====
-{{  :bloc3:session-cookies.jpg?500  |Cookies}} 
 <WRAP center round box 90%> <WRAP center round box 90%>
-Les cookies sont des fichiers stockés **côté client** qui permettent de créer une persistance d’informations au fil des pages visitées par l’internaute :+Les cookies sont l'outil sur lequel reposent les sessions.\\ Les cookies sont des fichiers stockés **côté client** qui permettent de créer une persistance d’informations au fil des pages visitées par l’internaute :
   * Ce sont des ensembles de données stockées par le poste client sur son disque local sous la forme de fichiers « texte » ;   * Ce sont des ensembles de données stockées par le poste client sur son disque local sous la forme de fichiers « texte » ;
   * Les données sont enregistrées dans un cookie comme des paires « clé / valeur » ;   * Les données sont enregistrées dans un cookie comme des paires « clé / valeur » ;
Ligne 12: Ligne 11:
   * S’ils sont autorisés, les cookies sont accessibles au serveur par le fait que le protocole HTTP prévoit leur transport systématique et bidirectionnel dans les entêtes HTTP à chaque échange (REQUEST/RESPONSE) entre client et serveur ;   * S’ils sont autorisés, les cookies sont accessibles au serveur par le fait que le protocole HTTP prévoit leur transport systématique et bidirectionnel dans les entêtes HTTP à chaque échange (REQUEST/RESPONSE) entre client et serveur ;
 </WRAP> </WRAP>
 +{{  :bloc3:session-cookies.jpg?500  |Cookies}}
 ===== Les sessions ===== ===== Les sessions =====
-{{  :bloc3:session-sessions.jpg?500  |Sessions}} 
 <WRAP center round box 90%> <WRAP center round box 90%>
 Les sessions sont une technique mise en œuvre **côté serveur** pour assurer la persistance d’informations au fil des pages visitées par un internaute : Les sessions sont une technique mise en œuvre **côté serveur** pour assurer la persistance d’informations au fil des pages visitées par un internaute :
Ligne 22: Ligne 21:
   * Même si c’est techniquement possible, les variables de session n’ont pas vocation à être exploitées par le client;   * Même si c’est techniquement possible, les variables de session n’ont pas vocation à être exploitées par le client;
 </WRAP> </WRAP>
 +{{  :bloc3:session-sessions.jpg?500  |Sessions}}
  
-===== Comment configurer les sessions en PHP =====+===== Mettre en œuvre les sessions en PHP ===== 
 +==== Démarrer une session ==== 
 +Il est possible de conserver des valeurs d'une page à l'autre en utilisant le mécanisme des sessions. Une session est un ensemble d'informations relatives à un utilisateur connecté sur le site. Ces informations sont enregistrées sur le serveur PHP et existent donc quelle que soit la page PHP courante. Toute page souhaitant accéder à ces informations de session doit commencer par : 
 +<code php><?php 
 +   session_start(); 
 +?></code> 
 +Attention, ces lignes doivent impérativement être les premières du fichier. Une ligne vide avant, par exemple, provoquera une anomalie de fonctionnement !
  
-Il existe plusieurs façon de configurer des sessions en php mais selon moi la façon la plus facile est la suivante.+Chaque session possède un identifiant qui conserve la même valeur au fil des pages PHP. Cette valeur de type chaîne de caractères peut être utilisée de la manière suivante 
 +<code php><?php 
 +   echo session_id(); 
 +?></code>
  
 +==== Utiliser les variables de session ====
 +=== Utilisation courante ===
 +Lorsqu'une session est créée, il est possible de déclarer des variables de session et de leur donner une valeur. Voici l'exemple d'une page "**sessions2.php**" qui définit deux variables de session et comporte un lien vers une page "**sessions3.php**" :
 +<code php sessions2.php><?php
 +   session_start();
 +?>
 +<html>
 +<body>
 +<?php
 +    $_SESSION["nom"]='Dupont';
 +    $_SESSION["prenom"]='Paul';
  
-Pour la première partie, vous devrez pour chaque une de vos pages en PHP, indiquer que vous aller utiliser les notions de Session, pour ce faire vous devez copier ce code **en début de chaque page php** +    // session_register("prenom") permettra de créer une variable de session  
 +    // nommée prenom vide de contenu 
 +?> 
 +   <a href="sessions3.php">sessions3.php</a> 
 +</body> 
 +</html> 
 +</code> 
 +La page "**sessions3.php**" peut ensuite utiliser les deux variables définies : 
 +<code php sessions3.php><?php 
 +   session_start(); 
 +?> 
 +<html> 
 +<body> 
 +<?php 
 +    echo '<p>Nom : '.$_SESSION["nom"].'</p>'; 
 +    echo '<p>Prénom : '.$_SESSION["prenom"].'</p>'; 
 +?> 
 +</body> 
 +</html> 
 +</code> 
 +Ce sont pourtant 2 pages distinctes qui n’échangent formellement aucune donnée … 
 +=== Etat d'une variable de session === 
 +Comme pour toute variable en PHP, les fonctions **isset** et **empty** permettront de tester respectivement l'existence et la vacuité (le fait de contenir du vide) d'une variable.   
 +<WRAP group> 
 +<WRAP half column> 
 +<code php>if (!isset($_SESSION["nom"]) 
 +
 +    $_SESSION["nom"]='Dupont'; 
 +
 +</code>
  
-----+</WRAP>
  
-<?php session_start();?> +<WRAP half column> 
- +<code php
----- +if (empty($_SESSION["format"]
- +{ 
- +    $_SESSION["format"]='XML'; 
-<form method="postaction="index.php"> // +} 
- +</code
- +</WRAP> 
- <input type="hidden" name="action" value="page1" /> +</WRAP
- +=== Suppression d'une variable de session === 
- +Pour supprimer une variable de la session courante : 
- <label>Quel est votre prénom : </label+<code php
- +session_unset($_SESSION["nom"]); 
- +</code
-<?php session_start();?> +Pour supprimer toutes les variables de session en une seule ligne, au choix :  
- +<WRAP group> 
- <input type="text" name="prenom" /> +<WRAP half column
- +<code php> 
- +session_unset(); 
- <input type="submit" value="okay" /+</code> 
- +</WRAP>
- +
- +
- +
-----+
  
 +<WRAP half column>
 +<code php>
 +$_SESSION = array() ;
 +</code>
 +</WRAP>
 +</WRAP>
  
 +==== Clôture d'une session ====
 +<code=php>
 +session_destroy();
 +</code>
 +Attention, **session_destroy** ne détruit pas les variables associées à la session (cf **session_unset**, plus haut), ni le cookie sous-jacent, s’il existe. Il reste donc des traces de la session, notamment sur le client, ce qui peut avoir des effets indésirables. 
bloc3/sessions.1680088813.txt.gz · Dernière modification : 2023/03/29 13:20 de admin