
- 1: Avant de commencer
- 2: Présentation
- 3: Votre premier Script
- 4: Les variables
- 5: Les structures de contrôles
- 6: Mettre du PHP dans du code HTML
- 7: Les cookies
- 8: Le stockage des données : les tableaux
- 9: Le stockage des données : les fichiers
- 10: Le stockage des données : les bases de données
- 11: Les sessions par l'exemple
Les sessions par l'exemple
Pour continuer ce cours sur le PHP, nous allons désormais passer à l'étude d'un petit cas : une petite zone membre. Cette étude va nous permettre de mettre en pratique le chapitre sur les bases de données Mysql et de nous intéresser aux sessions.
Les sessions ne fonctionnent qu'à partir de PHP4 et permettent de passer des variables de page en page de manière opaque. Voici les principales fonctions dont vous aurez en général besoin lorsque vous travaillerez avec les sessions :
session_start();permet de lancer la sessionsession_register();permet d'enregistrer une variable de session, cette dernière étant passée en paramètresession_unregister();permet d'effacer une variable de sessionsession_is_registered();permet de vérifier si une variable a été déclarée pour la session en cours d'éxécutionsession_id();renvoie le numéro de la session en cours d'éxécutionsession_name();renvoie le nom de la session (souvent PHPSESSID)session_destroy();détruit la session en cours d'éxécutionsession_unset();permet de détruire toutes les variables déclarées pour la session en cours d'éxécution
Revenons à notre problème. On souhaite créer une zone membre. On a donc besoin d'un premier fichier permettant à l'utilisateur de s'inscrire comme membre (inscription.php), d'un fichier permettant au visiteur de s'identifier comme étant une membre (login.php), du fichier où seuls les membres peuvent accéder (membre.php), d'un fichier où on peut se déloguer (logout.php) et enfin d'un fichier de connexion à la base de données (connexion.php).
Pour ce dernier, je considère sa construction comme acquise et si vous ne vous rappelez plus de la manière dont ont le crée reportez vous au chapitre sur les bases de données. Pour pouvoir vérifier qu'un utilisateur est bel et bien inscrit en tant que membre il faut stocker les utilisateurs inscrits dans une base de données. On va donc pour cela créer une table membre avec les instructions suivantes :
CREATE TABLE membre (idmembre INT(4) NOT NULL AUTO_INCREMENT,
login VARCHAR(25) NOT NULL,
pass VARCHAR(25) NOT NULL,
PRIMARY KEY(idmembre)
);
Passons maintenant à la création du fichier inscription.php :
<?
if (!$action) // On se sert de la variable action pour savoir si l'utilisateur a déjà validé le formulaire ou non
{
?>
<html><body><form method="post" action="inscription.php?action=ajout">
<center>Veuillez entrer un login (longueur >=4) et un pass (longueur >=4) pour vous inscrire au site!</center>
<center>Nom: <input type="text" name="login" size="20" maxlength="25"></center></br>
<center>Pass: <input type="password" name="password" size="20" maxlength="25"></center></br>
<center><input type="submit" value="S'inscrire"></center></form>
</body></html>
<?
/* Si l'utilisateur a validé le formulaire et si la longeur de $login et de $password est supérieure ou égale à 4
alors la condition est validée. On utilise la fonction strlen(); pour connaître la longueur des deux variables
rentrées dans le formulaire précédent. */
}
else if ($action=="ajout" && (strlen($login)) >= 4 && (strlen($password)) >= 4)
{
include("connexion.php"); // On inclut le fichier de connexion à la BDD
/* on vérifie que le login et le passe ne soient pas déjà pris par un autre utilisateur */
$verif=mysql_query("SELECT*FROM membre WHERE login='$login' and pass='$password'");
$verif1=mysql_num_rows($verif);
if ($verif1==0) // Personne n'a ce login et ce pass, on peut donc enregistrer cet utilisateur
{
mysql_query("INSERT INTO membre (idmembre, login, pass) VALUES('','$login','$password')");
echo "<html><body>Vous êtes à présent inscrit !</body></html>";
}
else
{
Header("Location:inscription.php"); // Ce login et ce pass sont déjà utilisés, on retourne à la page inscription.php
}
}
?>Voici maintenant le contenu du fichier login.php :
<?
if (!$action) // On se sert de la variable action pour savoir si l'utilisateur a déjà validé le formulaire ou non
{
?>
<html><body><center><? echo "$erreur"; /* on affiche l'erreur si elle existe */ ?></center>
<form method="post" action="login.php?action=ajout">
<center>Veuillez entrer votre login et votre pass:</center></br>
<center>Login: <input type="text" name="login" size="20"></center></br>
<center>Pass: <input type="password" name="password" size="20"></center></br>
<center><input type="submit" value="OK!"></center>
</form></body></html>
<?
}
else if ($action=="ajout")
{
include("connexion.php");
/* On vérifie que cet utilisateur est bien un membre */
$verif=mysql_query("SELECT*FROM membre WHERE login='$login' and pass='$password'");
$verif1=mysql_num_rows($verif);
if ($verif1!=0) /* Cet utilisateur est bien un membre */
{
session_start(); // Ouverture de session
session_register("login"); // On enregistre $login, on ne met pas le $ ici.
session_register("password"); // idem pour $password
Header("Location:membre.php"); // et on redirige vers la page membre.php
}
else
{
Header("Location:login.php?erreur=Erreur!"); // Ce n'est pas un membre
}
}
?>Voici le contenu du fichier membre.php. L'accès à ce fichier est sécurisé.
<?
session_start();
if (!session_is_registered("login") || !session_is_registered("password")) /* Si l'utilisateur n'a pas de pass ou de login enregistré, il n'est pas inscrit */
{
Header("Location:login.php?erreur=Erreur!");
}
else
{
echo "<html><body>Bienvenue $login sur votre espace membre</br>";
echo "<a href=\"logout.php\">Vous Déloguer ?</a></body></html>";
}
?>Enfin, voici le contenu du fichier logout.php :
<?
session_start();
session_unset(); // On détruit toute les variables de sessions
session_destroy(); // On détruit la session
Header("Location:membre.php"); // On redirige sur membre.php et on s'aperçoit qu'on ne peut plus accéder à la page !
?>Cette petite zone membre montre bien la puissance des sessions. Vous pouvez bien entendu à partir de cet exemple de base créer une zone membre beaucoup plus important pour votre site en rajoutant des champs à la table membre.
D'autre part, il faut préciser qu'on aurait pu procéder de beaucoup d'autres manières pour cette zone membre à savoir en utilisant un cookie pour l'identification à la place des sessions par exemple ou pourquoi pas en utilisant à la fois les sessions et une identification par cookie.

Ajouter un commentaire