Bienvenue sur www[/gris].STUDENT-DESIGNER.[gris]com

Annonces


Affichage du tutoriel

Tutoriaux Tutoriaux > Programmation > PHP / MYSQL > Les cours PHP > Gestion des Sessions en PHP
Créé le Mardi 8 Aout 2006 par Jango

Gestion des Sessions en PHP

Nous allons voir les méthodes pour activer et désactiver les sessions à partir d'un formulaire d'identification login/pass.

La gestion se fait en 3 fichiers :

  • index.html // le formulaire[/li][li]login.php //traitement pour la connexion[/li][li]logout.php //traitement pour la deconnexion

ouvrir Chapitre 1 : Le formulaire HTML

Appelons le fichier dans lequel vous allez écrire ce formulaire index.html


<form method="post" action="login.php">
    <fieldset>
          <label for="login">Login :</label>
          <input type="text" name="login" /><br/>
          <label for="pass">Mot de passe :</label>
          <input type="password" name="pass" /><br/>
          <input id="connecter" type="submit" value="connecter" />
    </fieldset>
</form>



Le script 'login.php' va effectuer le traitement d'identification.

Explications :

  • methode="post" correspond à la méthode d'envoie des informations au script[/li][li]action="login.php" correspond au script auquel on va envoyer les informations[/li][li]<input type="text" name="login" /> correspond au champ dans lequel on va saisir le login[/li][li]<input type="password" name="pass" /> correspond au champ dans lequel on va saisir le passoword (type="password" permet d'afficher des étoiles pour cacher le password)

ouvrir Chapitre 2 : login.php


<?php
if (isset($_POST)) { //si les informations ont été envoyé
$login trim(htmlspecialchars(addslashes($_POST['login']))); //Parsing du login 
$password trim(htmlspecialchars(addslashes($_POST['pass']))); //parsing du password 

if( ( strlen($login)!=0) && (strlen($password)!=0))  { 
        
$q_login mysql_query("
        SELECT id, nom, prenom
        FROM util
        WHERE login='"
.$login."'
            AND pass='"
.md5($password)."'
        LIMIT 0,1"
); //on lance la requete SQL renvoyant l'id de la personne, son nom et son prenom en fonction des informations entrées dans le formulaire ($_POST["login"] et $_POST["pass"])
    
if (mysql_num_rows($q_login)) {//si il existe des resultats à la requête
        
session_start(); // ON LANCE LA SESSION
        
list($id$nom$prenom$statut) = mysql_fetch_assoc($q_login); // on recupère les resultats de la requête dans des variables correspondantes
        
$_SESSION["m_login"] = $login// on inscrit la variable $login en variable de session
        
$_SESSION["m_id"] = $id//idem pour l'id
        
$_SESSION["m_nom"] = $nom;//idem pour le nom
        
$_SESSION["m_prenom"] = $prenom;//idem pour le prenom
        
header("location: ".$_SERVER['HTTP_REFERER']); //on renvoie l'utilisateur vers la page de provenance
    
} else header("location: .."); //en cas d'echec on le redirige vers la page principale
} else die (header("location: ..")); //en cas d'échec on le redirige vers la page principale
} else die(header("location: ..")); //en cas d'echec on le redirige vers la page principale
?>

ouvrir Chapitre 3 : Utiliser les sessions

Maintenant que vos variables de sessions sont activées et définies, vous pouvez les utiliser de manière simple.

Exemple :


<?php

if(isset($_SESSION['id']))
       echo 
'les sessions c\\'est rigolo';
else
       echo '
aucune section lanc&eacute;e;

?>

ouvrir Chapitre 4 : Desactiver les sessions

Très simple, il suffit de faire un lien pointant vers logout.php

Detail du script logout.php


<?php
        session_start
();
        
session_unset();
        
session_destroy();

        
header("location: ".$_SERVER['HTTP_REFERER']); //on redirige vers la page de provenance

?>

Conlusion

Comme le montre ce petit cours, c'est très simple d'utiliser les sessions en PHP mais surtout très pratique.

A vous de jouer |-)

Commentaires

Auteur Gestion des Sessions en PHP
morched89

Ecrit le 16 Juillet 2010 à 12h20

ca fonctionne pas :(

marg

Ecrit le 18 Avril 2010 à 11h42

Bon tuto, cependant attention, il commence à dater, il y a de nombreuses nouveautées !
Je pense notamment à la gestion des données qui est ici réservée uniquement à Mysql, alors que PDO:: permet une gestion orientée objet des bases de données compatible avec tous les SGBD.
Aussi, la fonction die(), qui est un alias de exit() pourrait disparaitre dans les prochaines versions, il est donc necessaire de prendre l'habitude d'utiliser exit()

par exemple, le fichier login.php ressemblerait plutot de nos jours à:

<?php
if (!isset($_POST) OR !$_POST["login"] OR !$_POST["password"]) //si les informations ont été envoyées
   
exit("Tous les champs sont à remplir");
//connexion à la base de donnée (peut être fait sur fichier séparé puis récupéré via un require_once() ;)
$host 'localhost'//le nom de l'host 
$table 'session'//le nom de votre table
$user 'lampp'//nom d'utilisateur
$password ''//mot de passe
try //verification qu'il n'y ait pas d'erreur de connexion
{
    
$bdd = new PDO("mysql:host=$host;dbname=$table"$user$password);
}
catch (
Exception $e)
{
        die(
'Erreur : ' $e->getMessage());
}
if(!
$_POST["login"] OR !$_POST["password"])
    
//utilisation de la programmation orientée objet via PDO
$query $bdd->prepare("SELECT id, prenom, nom, login FROM `util` WHERE login=:login AND pass=:pass LIMIT 1");
$query->bindParam(":login",$_POST["login"]);
$query->bindParam(":pass",md5($_POST["pass"]));
$query->execute(); //les données transmises sont automatiquement protegées
$result $query->fetch(PDO::FETCH_OBJ); //recupération des données sous forme d'objet
    
if(!$result->id)    
      exit(
"Erreur de connexion");
        
$_SESSION["m_login"] = $result->login// on inscrit la variable $login en variable de session
        
$_SESSION["m_id"] = $result->id//idem id
        
$_SESSION["m_nom"] = $result->nom//idem
        
$_SESSION["m_prenom"] = $result->prenom//idem
header("location: ".$_SERVER['HTTP_REFERER']); //retour à la page?>


(j'ai pas testé mais l'esprit du code y est)
N'hesitez pas à vous renseigner sur la poo (programmation orientée objet); elle offre une grande souplesse de developpement

nonmoum

Ecrit le 22 Fevrier 2010 à 15h41

Merciiiiiiiiiiiiii

nonmoum

Ecrit le 22 Fevrier 2010 à 15h29

Salut comment consulter ce tutorial? je ne comprend pas

Freez69

Ecrit le 4 Mai 2008 à 21h14

;) Rooooooooooooooo LoOOol je suis bête, j'ai pas vu le petit + a coté. :D

Page : [1] 2
Tutoriaux Tutoriaux > Programmation > PHP / MYSQL > Les cours PHP > Gestion des Sessions en PHP

Derniers inscrits