Vous êtes sur la page 1sur 9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

Rechercher :
Mots cl

> Accueil > Les comment faire ? > Comment faire un espace membre en PHP 12 pers. connectes au site

Devenir Membre
Nom d'utilisateur : Nom d'utilisateur Mot de passe : Login OpenID Mot de passe perdu ?

PHP
Les cours de PHP Les comment faire ?
Annonces Google

MySQL PHP PHP Array PHP MD5

Communaut
News Forum Annuaire Annuaire de flux RSS Flux RSS
www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php 1/9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

Chat / IRC

Manuels
Doc. Apache Doc. MySQL Doc. Pear Doc. PHP Doc. PHP-GTK Doc. Smarty

Divers
Emplois PHP Rechercher Wall Contact
Annonces Google

PHP cours PHP script PHP Form PHP SQL

Comment faire un espace membre en PHP


Comment faire un anti-aspirateur de... Comment faire une messagerie intern... Accueil des comment faire Voici un petit comment faire vous permettant de raliser une bauche d'espace membre bas sur l'utilisation des sessions. En effet, cet espace membre sera "trs lger", et il ne sera compos que de 4 pages : - index.php qui contiendra le formulaire de login l'espace membre - inscription.php qui contiendra le formulaire permettant de s'inscrire cet espace membre - membre.php : la page d'accueil de l'espace membre - deconnexion.php qui sera une page vous permettant de vous dloger de cet espace membre, et donc de revenir au formulaire de connexion l'espace membre

Dans l'absolu, le minimum d'informations permettant d'accder un espace membre est : - un login - un mot de passe Par consquent, nous allons crer une table SQL ne contenant que 3 champs pour notre espace membre : - un champ id AUTO_INCREMENT qui nous permettra d'identifier chaque membre (chaque membre ayant
www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php 2/9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

un id diffrent). Ce sera notre cl primaire. - un champ login de type text qui contiendra le login de chaque membre de l'espace membre - un champ pass_md5 de type text contenant le mot de passe hach de chaque membre

Note :
Noter bien que l'on parle de mot de passe hach et non crypt. En effet, pour un maximum de scurit, et pour encoder des mots de passe, on utilise une technique de hachage rendue possible par l'utilisation de la fonction PHP md5, et non une technique de cryptage). Pourquoi ? Tout simplement parce que le hachage via md5 est irrversible, alors que le cryptage peut l'tre. Ce qui veut dire que, potentiellement, si quelqu'un pirate votre base de donnes, cette personne sera incapable de retrouver les mots de passe en clair avec un hachage de type md5. Par consquent, nous aurons la structure de table suivante : table membre 1. CREATE TABLE membre ( 2. id int(11) NOT NULL auto_increment, 3. login text NOT NULL, 4. pass_md5 text NOT NULL, 5. PRIMARY KEY (id) 6. ) TYPE=MyISAM; Rcuprer le code

Passons maintenant la cration de nos 4 pages PHP.

La pge d'accueil : index.php


Cette page contient le formulaire de connexion l'espace membre. Ce formulaire est compos de deux champs : - login, o l'utilisateur saisira son login - pass, o l'utilisateur saisira son mot de passe Une fois le formulaire soumis, nous testons si ces champs sont bien remplis, le cas chant, nous affichons un petit message sur la page informant l'utilisateur qu'il a oubli de remplir un champ. Dans le cas o le formulaire a t rempli correctement, nous allons interroger la base de donnes afin de vrifier que le couple login / mot de passe saisi par l'utilisateur existe bien dans notre base de donnes (ce qui
www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php 3/9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

veut dire que nous allons vrifier que le couple login / mot de passe correspond un vrai membre).

Attention !
Rappeler vous que nous voulons stocker des mot de passe hachs dans notre base de donnes. Par consquent, si nous recherchons le mot de passe en clair dans la base de donnes, on ne risque pas de trouver grand-chose. Afin de faire correspondre mot de passe saisi en clair dans formulaire et mot de passe hach stock dans la base de donnes, nous allons passer un coup de md5 sur le mot de passe saisi dans le formulaire avant de rechercher ce mot de passe dans la table membre. Si le couple login / mot de passe est trouv, on dmarre une session, puis on redirige le membre vers la page d'accueil de l'espace membre (membre.php). Sinon, on reste sur notre formulaire de connexion. Voici le code de notre page index.php : index.php 1. <?php 2. // on teste si le visiteur a soumis le formulaire de connexion 3. if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') { 4. if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) { 5. 6. $base = mysql_connect ('serveur', 'login', 'password'); 7. mysql_select_db ('nom_base', $base); 8. 9. // on teste si une entre de la base contient ce couple login / pass 10. $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"'; 11. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 12. $data = mysql_fetch_array($req); 13. 14. mysql_free_result($req); 15. mysql_close(); 16. 17. // si on obtient une rponse, alors l'utilisateur est un membre 18. if ($data[0] == 1) { 19. session_start(); 20. $_SESSION['login'] = $_POST['login']; 21. header('Location: membre.php'); 22. exit(); 23. } 24. // si on ne trouve aucune rponse, le visiteur s'est tromp soit dans son login, soit dans son mot de
www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php 4/9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.

passe elseif ($data[0] == 0) { $erreur = 'Compte non reconnu.'; } // sinon, alors la, il y a un gros problme :) else { $erreur = 'Probme dans la base de donnes : plusieurs membres ont les mmes identifiants de connexion.'; } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <html> <head> <title>Accueil</title> </head> <body> Connexion l'espace membre :<br /> <form action="index.php" method="post"> Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br /> Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br /> <input type="submit" name="connexion" value="Connexion"> </form> <a href="inscription.php">Vous inscrire</a> <?php if (isset($erreur)) echo '<br /><br />',$erreur; ?> </body> </html>

Rcuprer le code

Noter que cette page contient galement un lien permettant aux utilisateurs de s'inscrire l'espace membre.

La page de l'espace membre : membre.php


Le test de l'existence du compte de notre membre ayant dj t fait dans la page index.php, il nous reste peu de chose faire pour notre espace membre.
www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php 5/9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

En effet, dans membre.php, il ne nous reste qu' tester que la personne qui accde a cette page est bien passe par le formulaire de connexion de l'espace membre. Pour ce faire, nous testons si la variable de session $_SESSION['login'] est bien dfinie : - si elle ne l'est pas, nous redirigeons le visiteur vers le formulaire de connexion de l'espace membre - sinon, on affiche le contenu de notre espace membre (dans cet bauche, remarquer que nous n'affichons pas grand-chose ^^ part un lien permettant de se dconnecter de l'espace membre) membre.php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. <?php session_start(); if (!isset($_SESSION['login'])) { header ('Location: index.php'); exit(); } ?> <html> <head> <title>Espace membre</title> </head> <body> Bienvenue<?php echo htmlentities(trim($_SESSION['login'])); ?>!<br /> <a href="deconnexion.php">Dconnexion</a> </body> </html>

Rcuprer le code

La page de dconnexion de l'espace membre : deconnexion.php


Ici, nous allons tuer la session en cours, et rediriger le visiteur vers le formulaire de connexion l'espace membre. Peu de chose dire. deconnexion.php 1. <?php 2. session_start(); 3. session_unset();
www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php 6/9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

4. 5. 6. 7.

session_destroy(); header('Location: index.php'); exit(); ?>

Rcuprer le code

La page d'inscription l'espace membre : inscription.php


Dans cette page, nous allons placer le formulaire d'inscription notre espace membre. Ce formulaire sera compos de 3 champs : - un champ login contenant le login que l'utilisateur voudra utiliser pour se connecter l'espace membre - un champ pass contenant son mot de passe (que nous devrons hacher via la fonction md5 de PHP avant de le stocker dans la base de donnes) - un champ pass_confirm demandant l'utilisateur de retaper son mot de passe (ceci, afin d'tre bien sur que l'utilisateur tape bien le mot de passe qu'il souhaite taper ^^) Une fois le formulaire soumis, il nous reste vrifier diverses choses avant d'enregistrer ce nouveau membre. Dj, nous testons si le formulaire est bien rempli. Si il ne l'est pas, nous affichons un petit message en dessous du formulaire. Si il l'est, nous passons au prochain test, testant si les deux mots de passes saisis par le visiteur sont identiques. Ensuite, nous nous connectons notre base de donnes, et nous vrifions si le login saisi par l'utilisateur n'existe pas dj dans notre table membre. Si il ne l'est pas, nous validons l'inscription tout en prenant soin de stocker le mot de passe hach du nouveau membre dans notre table, puis nous redirigeons notre visiteur vers notre espace membre. inscription.php 1. <?php 2. // on teste si le visiteur a soumis le formulaire 3. if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { 4. // on teste l'existence de nos variables. On teste galement si elles ne sont pas vides 5. if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { 6. // on teste les deux mots de passe 7. if ($_POST['pass'] != $_POST['pass_confirm']) { 8. $erreur = 'Les 2 mots de passe sont diffrents.'; 9. }
www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php 7/9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

10. 11. 12. 13. 14. 15.

else { $base = mysql_connect ('serveur', 'login', 'password'); mysql_select_db ('nom_base', $base);

// on recherche si ce login est dj utilis par un autre membre $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 16. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 17. $data = mysql_fetch_array($req); 18. 19. if ($data[0] == 0) { 20. $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")'; 21. mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 22. 23. session_start(); 24. $_SESSION['login'] = $_POST['login']; 25. header('Location: membre.php'); 26. exit(); 27. } 28. else { 29. $erreur = 'Un membre possde dj ce login.'; 30. } 31. } 32. } 33. else { 34. $erreur = 'Au moins un des champs est vide.'; 35. } 36. } 37. ?> 38. <html> 39. <head> 40. <title>Inscription</title> 41. </head> 42. 43. <body> 44. Inscription l'espace membre :<br /> 45. <form action="inscription.php" method="post"> 46. Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br /> 47. Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br /> 48. Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br /> 49. <input type="submit" name="inscription" value="Inscription"> 50. </form> 51. <?php 52. if (isset($erreur)) echo '<br />',$erreur; 53. ?>
www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php 8/9

17/04/13

Comment faire un espace membre en PHP - Le PHP Facile

54. </body> 55. </html> Rcuprer le code

Et voila un bon dbut d'espace membre, minimaliste, mais fonctionnel :) A vous de stocker plus d'informations dans la table membre. A vous de placer les informations de votre choix dans votre espace membre. A vous de faire une confirmation d'inscription via une adresse E-Mail. A vous de ... Bref, beaucoup de travail en perspective ;)
Auteur : LA GLOBULE Dernire rvision du comment faire : le 27/10/2009 21:52 Tlcharger ce comment faire au format PDF

Comment faire un anti-aspirateur de... Comment faire une messagerie intern... Accueil des comment faire Remonter

2002 - 2013 Le PHP Facile - Design by _Studcrea_ - Intgration RS-DEV Jamma Play - L'diteur javascript - CSS - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique

www.lephpfacile.com/howto/10-comment-faire-un-espace-membre-en-php

9/9