Recherche rapide
     
Espace Membres
il y'a actuellement 32370 membres
 
Pseudo  
Password  
inscriptions
 
Cours php/Tutoriels
  1/  Apprendre les bases de PHP
  1a/  Divers en PHP, les erreurs, les variables etc...
  2/  Les variables
  3/  Les variables d'environnements
  4/  Les conditions
  5/  Les boucles
  6/  Les cookies
  7/  Travailler sur les dates
  8/  Les tableaux array()
  9/  Travailler avec les fichiers
  10/  Traiter les chaines de caractères
  11/  Récuperer et verifier les données d'un formulaire
  12/  Envoyer des mails
  13/  Les pseudo-frames
  14/  Débuter avec mysql
  15/  Fonctions update et delete de mysql
  16/  Comprendre et utiliser la clause where
  17/  Liste de quelques fonctions mysql
  18/  Mysql par la pratique, construire un livre d'or
  19/  Construire un mini moteur ou annuaire
  20/  Afficher sur plusieurs pages
  21/  La construction de votre forum
  22/  Faire son script de sondage (vote)
  23/  Sessions , mise en pratique
  24/  Sessions , récapitulatif
  25/  Les expressions régulières
  26/  Coder son ANTI-FLOOD
  27/  Utiliser et créer ses fonctions
  28/  Upload et transfert de fichiers
 
 
 
Liens
  Les cours pour bien débuter PHP
Les SESSIONS sous PHP 4

Ce cours n'a pas encore été mis à jour

J'espère qu'en lisant les cours du site, vous aurrez acquérit un certain niveau en codage PHP, ce qui nous permettra d'aborder quelques sujets, je ne dirais pas avancés mais bon. Dans le cas de ce cours nous étudierons les sessions ( apparues avec PHP4 ) qui nous permettent de faire passer nos variables à travers les différentes pages. Certes il y a d'autres façons tel que les querystrings (passage des variables par l'url) mais il est plus elegant et plus securisé d'utiliser les sessions.
Voyons voir maintenant comment fonctionnent ces sessions par un petit exemple concret : Gestion d'un espace membres.

Sommaire
  • Formulaire d'identification
  • Script d'identification
  • Ouverture de la session
  • Enregistrement des variables
  • Vérification de l'identification du membre
  • Destruction de la session
  • Recapitulatif de toutes les fonctions



Pour que vous compreniez mieux le fonctionnement des sessions nous créerons un espace membre, mais nous n'utiliserons que les trucs basique, si vous souhaitez telecharger un espace membre complet allez sur l'annuaire de scripts du site et vous trouverez le mien disponible.
Commencons par le principal : la table "membres"
Nous ne créerons pas une multitude de champs dans notre cas, nous n'aurons besoin que de 3 champs : id, login et pass qui nous serviront à vérifier lidentité du membre.
CREATE TABLE membres ( // création de la table
id tinyint(4) NOT NULL auto_increment, // le champs id qui sera indexé
login varchar(50) NOT NULL, // champs pour stocker le login du membre
pass varchar(20) NOT NULL, // pour stocker le pass du membre
UNIQUE KEY (id)
);

Le formulaire d'identification
Jusque là tout va bien pour vous , c'est du déjà vu, le formulaire d'identification ne risque pas non plus de poser de problème vu que ce n'est que du html. Voici le code :

<table width="300" cellspacing="1" border="1"><form method="post" action="identifier.php">
<tr><td bgcolor="darkblue"><center><font color="white">Formulaire d'identification</font></center></td></tr>
<tr><td><center><input type="text" name="login"></center></td></tr>
<tr><td><center><input type="password" name="pass"></center></td></tr>
<tr><td><center><input type="submit" value="Identifier"></center></td></tr>
</form></table>


Voyons voir ce que ca donne en visuel
Formulaire d'identification
( N.B : le formulaire ci dessus n'est pas actif )

Passons à notre premier code : l'identification
Nos données concernant les membres sont stockées dans une table, il nous faudra donc nous connecter à la base, et selectionner les login et les pass et voir s'il y en a un qui concorde avec ceux qu'a entré le visiteur si oui on le redirige vers la zone membre et on ouvre la session, sinon on lui réaffiche le formulaire d'identification.
NB : Je vous conseille de lire les commentaires du code c'est là que tout se passe.

<?php

/*********************************************
* @Author : HbiLLo
* @Script : Zone Membre
* @Description : Ce script vous permet de gérer
* votre espace membre grâce à un système de sessions.
* @Date : Jeudi 27 Juin 2002
* @Email : hbillo@az-php.com
* @WebTeam : Az-PHP
* @Team Website : http://www.az-php.com
* @Site Perso : http://www.phpcool.fr.st
*  
*********************************************/

// ON inclut le fichier de configuration
require ("config.inc.php");

// On se connect à notre serveur Sql
mysql_connect($server,$user,$pass);

// On selectionne la base de données
mysql_select_db($base);

// On selectionne quand le champs login correspond au login entré
// et le champs passe au pass entré.
$sql "SELECT * FROM membres WHERE login=$login and pass=$pass";

// On execute la requête de selection
$res mysql_query($sql);

// On compte le nombre de ligne des resultats
// 1 : si valide 0 si aucun login ne correspond
$exist mysql_numrows($res);

// Si la variable $exist = 0 --> login inexistant ou faux pass
if(!$exist) {
    
// On affiche ce message d'erreur
    
echo "<center>Veuillez vérifier vos données</center>";
    
    
// On inclut le formulaire d'identification
    
include("formulaire.php");
}

// Sinon, si le login et pass sont valides
else {

// On ouvre la session
session_start();

// On enregistre la variable login qu'on fera passer sur ttes les pages
// ATTENTION : Notez bien l'absence de $ devant login
session_register("login");

// On affiche un message de bienvenu
echo "<center>Bienvenu sur votre espace membre : $login</center>";
    
// Notons que la session a un nom par defaut et un identifiant
// Nom par défaut : PHPSESSID
// Id Aleatoire généré lors de l'ouverture de la session
    
// définissons d'abord les variables
$sess_nom session_name();
$sess_id session_id();
    
// Affichons si on veut le nom est l'id de la session
echo "Le nom de la session est :<br> ";
echo
$sess_nom." et l'Id est : ".$sess_id."";
    
// On affiche maintenant un lien vers une page d'essai
// Notez qu'on ne passe pas les variables par l'url
echo "<a href=\"page.php\">Page Essai</a>";
    
// A la fin on offre au membre la possibilité de se deconnecter
echo "<a href=\"deconexion.php\">Deconnection</a>";
}

?>


Decortiquons le code ci dessus
Nous allons maintenant recapituler le code ci dessus afin que tout soit vraiment clair dans votre tite tête de tit programmeur ! :)
Alors on affiche au visiteur le formulaire d'identification où il entre son login et son pass.
On cherche dans notre base de données si le login entré existe, et si oui on vérifie si le password entré est aussi juste.
En cas d'erreur , on affiche le message d'erreur et on réaffiche le formulaire pour que le visiteur puisse réessayer (bien sûr dans une application avancée on pourrait limiter le nombre d'essais à 3).
Si les login et pass sont corrects, on ouvre la session ( avec session_start(); ) et on enregistre les variables à passer entre les pages ( avec session_register(variable); ) notez qu'il n'y a pas de '$' devant la variable lors de l'enregistrement.

Maintenant nous allons étudier de près cette "page.php" et voir comment nous ferons pour vérifier si le visiteur est identifié, et les actions à effectuer selon le cas.

Comment vérifier si le visiteur est identifié

Vérifier si le visiteur est identifié , c'est tout simplement verifier si la variable $login est declarée (isset) la façon la plus simple de procéder est celle ci :

Code du fichier page.php ( 1ère façon )
<?php

// On commence par inclure le fichier de configuration
require ("config.inc.php");

// On vérifie si la variable login est declarée
// Si elle ne l'est pas on redirige vers le formulaire
if(!$login) {
    echo 
"<center>Veuillez vous identifier d\'abord</center>";
    include (
"formulaire.php");
}

// Si la variable est declarée on affiche ce message
else {
    echo 
"Bienvenu sur votre espace membre $login";
}

?>
Cependant, le code ci dessus contient une importante faille de sécurité (j'espère que vous l'aviez deviné) car n'importe quel visiteur peut entrer l'url avec la variable login declarée et de ce fait le script php voyant la variable, n'y verra que du feu et les données de votre site se trouveront menacées.

Url trompeuse
http://www.votresite.com/page.php?login=quelconque
Corrigeons ce bug
Nous allons voir la deuxième methode possible ou on utilisera la vérification des sessions afin d'eviter la faille exposée ci dessus. Pour celà on aura recours à la fonction : if(!session_is_registered(variable))

<?php

/*********************************************
* Voici la version non deffectueuse
* du fichier page.php, c'est ce même
* code que vous devrez copier sur ttes
* les pages necessitant un enregistrement.
**********************************************/

// On inclut le fichier de configuration
require ("config.inc.php");

// On ouvre la session avant tout
session_start();

// On vérifie si la session "login" est enregistrée
// Si la session "login" n'est pas enregistrée
if(!session_is_registered(login)) {
// On affiche ce message d'erreur
echo "<center>Vous devez vous identifier pour accéder à cette page</center>";
    
// On affiche le formulaire d'identification
include ("formulaire.php");
}

// sinon, la session "login" est enregistrée
else {
// On affiche le message de bienvenue
echo "<center>Bienvenu sur votre espace membre $login</center>";
}

?>

Et voilà vous saurez maintenant comment vérifier que votre visiteur est identifié, nous reste maintenant le fichier deconexion.php qui comme son nom l'indique permettra au visiteur de se deconnecter (destruction de la session).
<?php

// On commence par ouvrir la session
session_start();

// On désenregistre la session login
session_unregister("login");

// On supprime ttes les variables de la session
session_unset();

// On détruit totalement la session
session_destroy();

// On affiche le message de reussite
echo "Vous n\'êtes plus connecté !";

// On réaffiche le formulaire d'identification
include ("formulaire.php");

?>

Pour configurer le fichier de configuration je pense que vous n'aurez pas trop de mal :-) on voit ça à chaque fois donc !

<?php

// On declare les variables de connection
$server "localhost";
$user "";
$pass "";
$base "az-php";

?>



Nous allons maintenant reprendre toutes les fonctions de sessions que nous avons vous et utilisées au cours de la création de notre script, afin de donner quelques précisions qui vous seront utiles plus tard.



Recapitulation des fonctions de sessions
<?php

session_start
();
/************************
* Cette fonction ouvre une session elle doit être utilisée au tout
* début de votre code, sinon elle peut engendrer des erreur du type
* ( headers already sent !)
*  
*************************/

session_name();
/************************
* Ceci retourne le nom de votre session qui est tjrs par défaut
* egal à PHPSESSID que vous verrez apparaître sur vos liens lors
* de l'utilisation des sessions.
*
*************************/

session_id();
/************************
* C'est l'identifiant aléatoire crée lors de l'ouverture de la
* session
*
*************************/

session_register("variable");
/************************
* "Variable" est la variable que vous souhaitez emmagasiner, il vous
* faudra enregistré chaque variable à passer, et notez qu'on ne met
* pas de $ devant la variable à enregistrer
*
*************************/

session_is_registered("variable");
/************************
* Sert à vérifier que la session "variable" est bien enregistrée
* et donc que la variable passe bien.
* utilisée pour vérifier si le visiteur est loggé ou pas.
*
*************************/

session_unregister("variable");
/************************
* Sert à désenregistret la session consacrée à "variable", utilisée
* lorsqu'un utilisateur veut se deconnecter par exemple.
*
*************************/

session_unset();
/************************
* Cette fonction désenregistre toutes les sessions en cours.
*
*************************/

session_destroy();
/************************
* Cette fonctione a pour but de détruire toutes les sessions
* ouvertes et celles enregistrées.
* Utilisée aussi lors d'une deconnection.
*
*************************/

?>
 
Notre cours touche à sa fin, et j'espère que vous en aurez profité, en tout cas je vous conseille de le relire et surtout de faire très attention aux commentaires du code, c'est là que le plus important est expliqué.

On peut bien sur améliorer ce script de zone membre en ajoutant une interface d'administration et autres options utiles, mais celà fera partie de la seconde partie de ce cours où nous entrerons dans le plus profond du sujet : Zone membres et son Administration.
 
Pour les prochains cours, on a reçu quelques propositions sur le forum, et je pense que ça traitera des jointures de tables, ou de l'envoi de mails avec fichiers joints et en HTML. Et peut être que plus tard nous étudierons en détail quelques classes intéressantes de PEAR.
 

Bonne chance à tous.
'hbillo' hbillo@az-php.com


>>> Cours suivant n° 1

 

 

 
 
Rubrique installer
  1°/  Apache et PHP
  2°/  Mysql sur votre PC (version tar.gz)
  3°/  Mysql sur votre PC (version rpm)
 
Newsletter

 
Votez !!
Pas de votes ni suggestions actuellement
 
 
 
Débuter Linux
 1°/   Introduction
 2°/   Installation ( 1ere partie )
 3°/   Installation ( 2ème partie )
 4°/   Connexion / documentation / Synthaxe
 5°/   Les différentes commandes sous linux
 6°/   Installer / Désinstaller / Lister les applications
 7°/   Manipulation des chaines de caractères
 
    © Copyright 2005 - az-php.com - tous droits réservés , reproduction interdite . Hébergé par 1hebergeur.com [ mentions légales & copyright ]