TUTO PHP - Bouton se souvenir de moi

PrimFX Boris ('PrimFX') Le 2 août 2015

Voyons comment faciliter l'accès à l'espace membre de votre site pour vos internautes avec un bouton "Se souvenir de moi" dans le formulaire de connexion !

ATTENTION: Utiliser les cookies sans en informer l'utilisateur n'est pas légal... Il faut le prévenir avec un message comme "En poursuivant ma navigation sur ce site, j'autorise l'utilisation de cookies", plus d'infos à ce sujet ici : http://goo.gl/qwCxTb et merci à Wistaro pour m'avoir fait penser à préciser ça !

Documentation setcookie() : http://goo.gl/63mK0s

  • connexion.php

<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
include_once('cookieconnect.php');
if(isset($_POST['formconnexion']))
{
   $mailconnect = htmlspecialchars($_POST['mailconnect']);
   $mdpconnect = sha1($_POST['mdpconnect']);
   if(!empty($mailconnect) AND !empty($mdpconnect))
   {
      $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?");
      $requser->execute(array($mailconnect, $mdpconnect));
      $userexist = $requser->rowCount();
      if($userexist == 1)
      {
         if(isset($_POST['rememberme'])) {
            setcookie('email',$mailconnect,time()+365*24*3600,null,null,false,true);
            setcookie('password',$mdpconnect,time()+365*24*3600,null,null,false,true);
         }
         $userinfo = $requser->fetch();
         $_SESSION['id'] = $userinfo['id'];
         $_SESSION['pseudo'] = $userinfo['pseudo'];
         $_SESSION['mail'] = $userinfo['mail'];
         header("Location: profil.php?id=".$_SESSION['id']);
      }
      else
      {
         $erreur = "Mauvais mail ou mot de passe !";
      }
   }
   else
   {
      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>
<html>
   <head>
      <title>TUTO PHP</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Connexion</h2>
         <br /><br />
         <form method="POST" action="">
            <input type="email" name="mailconnect" placeholder="Mail" />
            <input type="password" name="mdpconnect" placeholder="Mot de passe" />
            <br /><br />
            <input type="checkbox" name="rememberme" id="remembercheckbox" /><label for="remembercheckbox">Se souvenir de moi</label>
            <br /><br />
            <input type="submit" name="formconnexion" value="Se connecter !" />
         </form>
         <?php
         if(isset($erreur))
         {
            echo '<font color="red">'.$erreur."</font>";
         }
         ?>
      </div>
   </body>
</html>
  • deconnexion.php
<?php
session_start();
setcookie('email','',time()-3600);
setcookie('password','',time()-3600);
$_SESSION = array();
session_destroy();
header("Location: connexion.php");
?>
  • cookieconnect.php
<?php
if(!isset($_SESSION['id']) AND isset($_COOKIE['email'],$_COOKIE['password']) AND !empty($_COOKIE['email']) AND !empty($_COOKIE['password'])) {
   $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?");
   $requser->execute(array($_COOKIE['email'], $_COOKIE['password']));
   $userexist = $requser->rowCount();
   if($userexist == 1)
   {
      $userinfo = $requser->fetch();
      $_SESSION['id'] = $userinfo['id'];
      $_SESSION['pseudo'] = $userinfo['pseudo'];
      $_SESSION['mail'] = $userinfo['mail'];
   }
}
?>

A propos de l'auteur

PrimFX
Boris ('PrimFX')

Je m'appelle Boris, j'ai 22 ans et je suis passionné d'informatique. Suite à mes études (Licence Informatique puis MSc Computer Science au Trinity College Dublin), je gère l'entreprise Single Quote co-fondée en 2019 et je profite de mon temps libre pour partager ma passion à travers des vidéos & articles 😃

Votre commentaire

Vous devez être connecté pour poster un commentaire. Se connecter ou Créer un compte

Commentaires 3

  • adam-el-kaoun Le 11 juillet, à 15:16 | Répondre

    @CLAUDE539 demande à la communauté sur discord http://primfx.com/chat/

  • adam-el-kaoun Le 11 juillet, à 15:15 | Répondre

    @CLAUDE539 demande à la communauté sur discord http://primfx.com/chat/

  • CLAUDE539 Le 11 janvier, à 17:02 | Répondre

    je recommence
    Bien le tuto; Question: serait-il possible d'ajouter une colonne à une bdd qui supprimerait les données après une certaine date?
    avec une timestamp?
    BàT

    claude539