Fixe un élément en position absolue
Voici une petite application pour apprendre comment faire un espace membre en php et MySQL
Vous devez avoir des connaissances en php et MySQL pour pouvoir suivre,si ce n'est pas le cas retournez voir nos cours.
Le code de notre espace membre sera composé de 4 pages :
Le minimum d'informations permettant d'accéder à un espace membre est :
Dans votre phpmyadmin créez une base de données.
Puis dans cette base nous allons créer une table SQL contenant 3 champs pour notre espace membre :
Requête SQL table membre :à taper dans phpMyAdmin
Code de la requête SQL.
CREATE TABLE membre ( id int(11) NOT NULL auto_increment, login text NOT NULL, passwd text NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM;
Cette page contient le formulaire de connexion à l'espace membre.
Ce formulaire est composé de deux champs :
Cette page contient également un lien permettant aux utilisateurs de s'inscrire à l'espace membre.
Une fois le formulaire soumis, nous testons si ses champs sont bien remplis, le cas échéant, nous affichons un 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 données afin de vérifier que le couple login / mot de passe saisi par l'utilisateur existe bien dans notre base de données (ce qui veut dire que nous allons vérifier que le couple login / mot de passe correspond à un membre déjà inscrit dans notre base de données).
Sacher que nous allons stocker des mots de passes hachés (c'est-à-dire cryptés) dans notre base de données. Donc si nous recherchons le mot de passe en clair dans la base de données, on risque de ne pas trouver grand-chose.
Afin de faire correspondre mot de passe saisi en clair dans le formulaire et le mot de passe haché stocké dans la base de données, 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 démarre 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 la page membre_index.php :
Tapez le code dans votre éditeur.
<?php // on teste si le visiteur a soumis le formulaire de connexion if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') { if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) { $base = mysql_connect ('serveur', 'login', 'password'); mysql_select_db ('nom_base', $base); // on teste si une entrée de la base contient ce couple login / pass $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST[ 'login']).'" AND passwd="'.md5(mysql_escape_string($_POST['pass'])).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $data = mysql_fetch_array($req); mysql_free_result($req); mysql_close(); // si on obtient une réponse, alors l'utilisateur est un membre if ($data[0] == 1) { session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); exit(); } // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe elseif ($data[0] == 0) { $erreur = 'Compte non reconnu.'; } // sinon, alors la, il y a un gros problème :) else { $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes 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="membre_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>
Le test de l'existence du compte de notre membre ayant déjà été fait dans la page membre_index.php, il nous reste peu de chose à faire pour notre espace membre.
En effet, dans membre.php, il ne nous reste qu'à tester que la personne qui accède a cette page est bien passée par le formulaire de connexion de l'espace membre.
Pour ce faire, nous testons si la variable de session $_SESSION['login'] est bien définie :
Voici le code de la page membre.php :
Tapez le code dans votre éditeur.
<?php session_start(); if (!isset($_SESSION['login'])) { header ('Location: membre_index.php'); exit(); } ?> <html> <head> <title>Espace membre</title> </head> <body> Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> !<br /> <a href="deconnexion.php">Déconnexion</a> </body> </html>
Ici, nous allons finir (fermer) la session en cours, et rediriger le visiteur vers le formulaire de connexion à l'espace membre.
Voici le code de la page deconnexion.php :
Tapez le code dans votre éditeur.
<?php session_start(); session_unset(); session_destroy(); header('Location: membre_index.php'); exit(); ?>
Dans cette page, nous allons placer le formulaire d'inscription à notre espace membre, qui sera composé de 3 champs :
Une fois le formulaire soumis, il nous reste à vérifier diverses choses avant d'enregistrer ce nouveau membre.
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 le mot de passe et sa confirmation saisis par le visiteur sont identiques.
Puis, nous nous connectons à notre base de données, et nous vérifions si le login saisi par l'utilisateur n'existe pas déjà 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.
Voici le code de la page inscription.php :
Tapez le code dans votre éditeur.
<?php // on teste si le visiteur a soumis le formulaire if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') { // on teste l'existence de nos variables. On teste également si elles ne sont pas vides if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) { // on teste les deux mots de passe if ($_POST['pass'] != $_POST['pass_confirm']) { $erreur = 'Les 2 mots de passe sont différents.'; } else { $base = mysql_connect ('serveur', 'login', 'password'); mysql_select_db ('nom_base', $base); // on recherche si ce login est déjà utilisé par un autre membre $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); if ($data[0] == 0) { $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login'] ).'", "'.md5(mysql_escape_string($_POST['pass'])).'")'; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); session_start(); $_SESSION['login'] = $_POST['login']; header('Location: membre.php'); exit(); } else { $erreur = 'Un membre possède déjà ce login.'; } } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <html> <head> <title>Inscription</title> </head> <body> Inscription à l'espace membre :<br /> <form action="inscription.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 /> 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 /> <input type="submit" name="inscription" value="Inscription"> </form> <?php if (isset($erreur)) echo '<br />',$erreur; ?> </body> </html>
Et voila un bon début d'espace membre, un ébauche minime, mais fonctionnel
A vous de stocker plus d'informations dans la table membre, de placer les informations de votre choix dans votre espace membre, de faire une confirmation d'inscription via une adresse E-Mail, et de ...
Beaucoup de travail en perspective ou quoi ?