Dans cet exemple nous allons voir comment créer une session, afin de protéger certaines pages en y incluant un accès par mot de passe.
De cette manière vous allez pouvoir mettre une section membre à votre site.
Pour commencer nous allons créer une table MySQL qui va nous permettre de stocker les membres (Voir "Créer une Table avec une requête SQL").
Voici la table :
CREATE TABLE membres ( id int(11) NOT NULL auto_increment, name varchar(25) NOT NULL, pass varchar(32) NOT NULL, PRIMARY KEY (id) );
Créer un formulaire d'identification (name et pass), à insérer dans votre page web.
Exemple dans votre page "index.php".
<form action="/session.php" method="post"> <input name="name" type="text" size="12" value="" /> Name<br /> <input name="pass" type="password" size="12" value="" /> Password<br /> <input name="submit" type="submit" value="Connexion" /> </form>
Une fois le formulaire d'identification remplit et envoyé par la méthode POST, nous récupérons les variables des champs inputs.
Créer un fichier nommé "session.php" à la racine de votre ftp.
Attention ! N'oubliez pas de changer les variables suivantes :
localhost, root, mot_de_pass, base
Et d'enregistrer dans la base de donnée (membres), les mots de passe crypté avec md5
(voir "Génerateur de Mot de Passe crypté avec md5").
<?php
//initialisation de la session
session_start();
//si les champs ont été remplis
if (!$_POST['name']=="" && !$_POST['pass']=="") {
//on récupère les valeurs des champs
$name = $_POST['name'];
$pass = md5($_POST['pass']);
//connexion à la base de donnée
$connect = mysql_connect('localhost', 'root', 'mot_de_pass');
mysql_select_db('base', $connect);
$sql = mysql_query("SELECT pass FROM membres WHERE name='$name'");
$row = mysql_fetch_array($sql);
$pass_sql = $row['pass'];
//on teste si le mot de passe correspond à la base de donnée
if ($pass_sql == $pass) {
//l'utilisateur est valide
//on crée la variable de session avec son nom
$_SESSION['name'] = $name;
$msg = 'Vous êtes correctement indentifié';}
else {
//sinon on avertit l'utilisateur
$msg = 'Votre nom ou votre mot de passe est incorrect<br />';
$msg .= '<a href="/index.php">Retour</a>';}
//fermeture de la connexion
mysql_close();}
else {
//un des champs n'est pas rempli
$msg = 'Votre nom et/ou votre mot de passe n\'est pas renseigné<br />';
$msg .= '<a href="/index.php">Retour</a>';}
//on affiche le resultat
echo $msg;
?>
On vérifie si une session est bien crée et validée. Dans le cas contraire on redirige l'utilisateur vers la page qui accueil le formulaire d'identification.
Créer un fichier nommé "auth.php" à la racine de votre ftp.
<?php
//on vérifie que l'utilisateur est identifé
if (!isset($_SESSION['name'])) {
//si la variable de session n'existe pas
//on redirige l'utilisateur vers le formulaire d'identification
header('Location: ./index.php');
//on arrête l'exécution
exit();}
?>
Pour protéger une page ou des pages de votre site, il vous suffira de mettre ce petit bout de code au début de chaque page.
require("./auth.php");