Authentification : pages d’inscription et de connexion
Bienvenue dans la 12ème séance de cette formation. Aujourd’hui, nous allons créer ensemble les pages de connexion et d’inscription.
Pour la page de connexion, nous avions déjà un formulaire et un code de traitement qui extrayait les informations d’un tableau. Maintenant, nous allons récupérer les informations de l’utilisateur directement depuis la base de données, à partir de la table "user".
<?php
if(isset($_POST[’login’]))
{
if(!empty($_POST[’email’]) AND !empty($_POST[’password’]))
{
$email=trim(htmlspecialchars($_POST[’email’]));
$password=trim(htmlspecialchars($_POST[’password’]));
$querySelectUser=$dbConnect->prepare("SELECT * FROM user WHERE email=? limit 0,1");
$querySelectUser->execute(array($email));
$nbrUser=$querySelectUser->rowCount();
if($nbrUser > 0)
{
$userData=$querySelectUser->fetch();
if(password_verify($password, $userData[’password’]))
{
$_SESSION[’user’]=$userData[’id’];
header("Location: dashboard.php");
}
else
{
$error="Email ou mot de passe incorrect!";
}
}
else
{
$error="Email ou mot de passe incorrect!";
}
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
?>
Afin d’ajouter dynamiquement les utilisateurs, nous allons créer une page d’inscription avec un formulaire :
<form method=’post’ action=’’>
<?php
if(isset($error))
{
echo "<div class=’alert alert-danger’>".$error."</div>";
}
?>
<input type=’text’ class=’form-control’ name=’fullname’ placeholder="Votre nom" value="<?php if(isset($_POST[’fullname’])) { echo $_POST[’fullname’]; } ?>" required />
<input type=’email’ class=’form-control’ name=’email’ placeholder="Votre Email" value="<?php if(isset($_POST[’email’])) { echo $_POST[’email’]; } ?>" required />
<input type=’text’ class=’form-control’ name=’phone’ placeholder="Votre numéro de téléphone" value="<?php if(isset($_POST[’phone’])) { echo $_POST[’phone’]; } ?>" required />
<label>Date de naissance</label>
<input type=’date’ class=’form-control’ name=’naissance’ placeholder="Votre date de naissance" value="<?php if(isset($_POST[’naissance’])) { echo $_POST[’naissance’]; } ?>" required />
<input type=’password’ class=’form-control’ name=’password’ placeholder="Mot de passe" value="<?php if(isset($_POST[’password’])) { echo $_POST[’password’]; } ?>" required />
<input type=’password’ class=’form-control’ name=’passwordconfirm’ placeholder="Mot de passe de confirmation" value="<?php if(isset($_POST[’passwordconfirm’])) { echo $_POST[’passwordconfirm’]; } ?>" required />
<button type=’submit’ name="register" class=’btn btn-primary btn-block’>Créer un compte</button>
</form>
Pour le traitement du formulaire d’inscription :
<?php
if(isset($_POST[’register’]))
{
if(!empty($_POST[’email’]) AND !empty($_POST[’fullname’]) AND !empty($_POST[’phone’]) AND !empty($_POST[’naissance’]) AND !empty($_POST[’password’]) AND !empty($_POST[’passwordconfirm’]))
{
$fullname=trim(htmlspecialchars($_POST[’fullname’]));
$email=trim(htmlspecialchars($_POST[’email’]));
$phone=trim(htmlspecialchars($_POST[’phone’]));
$naissance=trim(htmlspecialchars($_POST[’naissance’]));
$password=trim(htmlspecialchars($_POST[’password’]));
$passwordconfirm=trim(htmlspecialchars($_POST[’passwordconfirm’]));
if($password == $passwordconfirm)
{
$passwordHash=password_hash($password, PASSWORD_DEFAULT);
$querySelectUser=$dbConnect->prepare("SELECT * FROM user WHERE email=?");
$querySelectUser->execute(array($email));
$nbrUser=$querySelectUser->rowCount();
if($nbrUser == 0)
{
$queryInsertUser=$dbConnect->prepare("INSERT INTO `user`(`name`, `email`, `password`, `phone`, `naissance`) VALUES (:name, :email, :password, :phone, :naissance)");
$queryInsertUser->execute(array(’name’ => $fullname, ’email’ => $email, ’password’ => $passwordHash, ’phone’ => $phone, ’naissance’ => $naissance));
$querySelectUser=$dbConnect->prepare("SELECT * FROM user WHERE email=? limit 0,1");
$querySelectUser->execute(array($email));
$nbrUser=$querySelectUser->rowCount();
if($nbrUser > 0)
{
$userData=$querySelectUser->fetch();
if(password_verify($password, $userData[’password’]))
{
$_SESSION[’user’]=$userData[’id’];
header("Location: dashboard.php");
}
else
{
$error="Email ou mot de passe incorrect!";
}
}
else
{
$error="Email ou mot de passe incorrect!";
}
}
else
{
$error="Adresse email déjà utilisé!";
}
}
else
{
$error="Vos mots de passe ne correspondent pas!";
}
}
else
{
$error="Remplir correctement les champs du formulaire";
}
}
?>
Pour afficher l’âge de l’utilisateur par rapport à sa date de naissance :
<?php
$currentYear=date(’Y’);
$userNaissance=date_create($user[’naissance’]);
$birthYear=date_format($userNaissance, ’Y’);
$age=$currentYear - $birthYear;
?>