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:22] – [Les cookies] adminbloc3:sessions [2023/04/11 12:02] (Version actuelle) – [Utiliser les variables de session] admin
Ligne 13: Ligne 13:
 {{  :bloc3:session-cookies.jpg?500  |Cookies}} {{  :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.1680088950.txt.gz · Dernière modification : 2023/03/29 13:22 de admin