Hébergement du site en PHP et Mysql par WDMédia-hébergement
Vous aussi adpotez les éléPHPants de Vincent Pontier !  
CONCOURS
 
 
PLUS DE PHP
 
 
PLUS DE JAVASCRIPT
 
COMMENT CA MARCHE
 
 
EXPLIQUE-MOI
 
 
NEWS LETTER
 

 
PARTENAIRES
 
Découvrez scriptsphp.org
Découvrez phpteam.net
Tout sur les expressions régulières
IE sucks :-)
 
DESIGN DU SITE
 
Espace membres
Tuto écrit par LionZion, revu en août 2004 par Molokai et Raf

Le principe d'utiliser les sessions pour verrouiller l'accès de certaines pages d'un site aux seules personnes autorisées (login/password) est devenu quelque chose de commun. Nous allons voir l'une des méthodes possibles pour le réaliser en PHP.

Le principe est très simple :

  • Le visiteur entre son login et mot de passe dans un formulaire d'identification
  • Dans le script qui recoit les données du formulaire :
    >> On récupère dans la table le mot de passe qui correspond au login fourni par le visiteur
    >> si ce mot de passe ne correspond pas à celui fourni par le visiteur, alors on le renvoie vers le formulaire d'identification
    >> si le mot de passe du visiteur correspond a celui de la table, alors on ouvre une session et on enregistre la variable login. Puis on fait un lien vers la page d'accueil de l'espace membres
  • sur toutes les pages de l'espace membres, en haut : on vérifie si la variable login est bien enregistrée comme variable de session: si oui, on affiche la page, sinon on affiche le formulaire d'identification

Création de la table des membres

Pour commencer nous allons créer une table mySQL qui va nous permettre de stocker les membres, celle-ci ne comportera que peu d'informations pour notre exemple. Voici la syntaxe :

Création de la table dans phpMyAdmin

Comme vous le voyez ne seront stockés que l'ID, le Pseudo du visiteur, son Login ainsi que son Password. A vous bien sûr de créer un formulaire d'inscription pour alimenter cette table :).

N.B: La table pourrait avoir une structure plus large si vous souhaitiez y ajouter d'autres informations sur le visiteur (ex: site perso, adresse e-mail, icq, etc.)

La page de LOG-IN des visiteurs

Comme sur n'importe quel site ayant une section privée, le visiteur doit entrer son Login/Password et valider.

 

Formulaire d'identification (login.htm)

<form action="login.php" method='post'>
<table align="center" border="0">
  <tr>
    <td>Login :</td>
    <td><input type="text" name="login" maxlength="250"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input type="password"name="pass" maxlength="10"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="log in"></td>
  </tr>
</table>
</form>

Il faut maintenant analyser le login/password du formulaire. Si le visiteur a fourni le bon login/password, alors la variable login est enregistrée comme variable de session, sinon on affiche le formulaire d'identification.

En enregistrant login comme variable de session, cela signifie que php va garder en mémoire la valeur de cette variable et que vous n'aurez pas à vous soucier de la transmettre de page en page. Bien sûr vous pouvez enregistrer autant de variables que vous le souhaitez.

Analyse du formulaire (login.php)

<?
// pensez a ouvrir une connexion vers mysql ici
// voir les exercices dans le menu de droite pour cela.

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  extract($_POST);
 
// on recupère le password de la table qui correspond au login du visiteur
  $sql "select pwd from tbl_user where login='".$login."'";
  $req mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data mysql_fetch_assoc($req);

  if(
$data['pwd'] != $pass) {
    echo 
'<p>Mauvais login / password. Merci de recommencer</p>';
    include(
'login.htm'); // On inclut le formulaire d'identification
    
exit;
  }
  else {
    
session_start();
    $_SESSION['login'] = $login;
    
    echo 
'Vous etes bien logué';
    
// ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres
 
}
  
}
else {
 
echo '<p>Vous avez oublié de remplir un champ.</p>';
   include(
'login.htm'); // On inclut le formulaire d'identification
  
exit;

}


?>

Notez qu'une session ne reste valable que tant que le visiteur garde son navigateur ouvert. S'il le ferme, la session est perdue et celui-ci au cas où il voudrait revenir devrait se re-loguer à nouveau.

Il nous reste maintenant à voir comment protéger les pages de l'espace membre.

Protéger une page (verif.php)

<?
session_start
();

/*
si la variable de session login n'existe pas cela siginifie que le visiteur
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION['login'])) {
  echo 
'Vous n\'êtes pas autoris´ à acceder à cette zone';
  include(
'login.htm');
  exit;
}
?> 

Ici encore, c'est très simple : si la variable login n'est pas enregistrée, alors cela signifie que le visiteur ne s'est pas logué. Dans ce cas on affiche le formulaire d'identification.

Ce code doit être placé sur chaque page que vous souhaitez protéger, et tout en haut de la page.

Pour finir

Comme d'habitude sur Php Débutant nous ne voyons que certaines fonctions, à vous de faire le reste, elle sont listées plus bas. Sachez tout de même que l'utilisation des certaines de ces fonctions est maintenant devenu obsolète à cause des variables globales à OFF et de l'utilisation du tableau global $_SESSION.

 
Site officiel de PHP : www.php.net


Ajouter une réponse
Nom
Email
Titre

Mise en forme : gras = [b]...[/b], italic = [i]...[/i], souligné = [u]...[/u], citation = [quote]...[/quote], lien = [url]liens_externe[/url] ou [url nom=texte]liens_externe[/url], code source : [code]...[/code]

Mémoriser mon nom et mon email : Oui Non
www.phpdebutant.org © 2016 - L'équipe de phpDebutant - Hébergement : WDMédia-hébergement
DEBUTEZ !
 
  0.  Introduction
  1.  Afficher une phrase ou une image
  2.  Afficher la date et l'heure
  3.  PHP dans du code HTML
  4.  La concaténation
  5.  Récupérer les valeurs d'un formulaire
  6.  Les structures de contrôle
  7.  Ecrire et lire dans un fichier texte
  8.  Les fonctions utilisateurs
  9.  Les variables d'environnement
  10.  Quelques fonctions utiles
  11.  SQL/MySQL (Create, Alter & Drop)
  12.  SQL/MySQL (Insert et Select)
  13.  SQL/MySQL (Delete et Update)
  14.  SQL/MySQL (Where)
  15.  Fonctions PHP pour mySQL
  16.  Interroger une table MySQL
  17.  Alimenter une ou plusieurs tables mySQL
  18.  Les pseudos-frames
  19.  Les sessions php4
  20.  Affichage page par page
  21.  Images dynamiques
  22.  Ca marche pas ?
  23.  Variables globales à OFF
  24.  Les variables dynamiques