Si vous vous tromper de mot de passe 3 fois lors de la connexion alors un cookie sera mis en place et empêchera la connexion de l'utilisateur pendant 5 min
Je tiens aussi a préciser que les mdp des utilisateurs sont sécurisé ^^
Voici le code pour votre base de donnée sql
CREATE TABLE IF NOT EXISTS `membres` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pseudo` varchar(255) NOT NULL,
`mail` varchar(255) NOT NULL,
`pass` varchar(255) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;
Ici vous aurez le code php je tiens a préciser que pour appeler vos class dans d'autre fichier vous devrez utilise ceci
require 'fichier.php';
$login = new Set_member();
$login->Inscription();
$login->Connexion();
$login->Profil();
$login->Edit_Member();
$login->Logout();
Je tient a préciser que cela dépend de la function que vous utiliserez si vous êtes sur la page de connexion alors vous utilise le le login->Connexion()Vous pourrez récupérer les données de vos utilisateurs en effectuant des echo sur les informations si dessous
$_SESSION['pseudo']
$_SESSION['id']
$_SESSION['mail']
Enfin vous avez le code complet n'oubliez pas que lors de votre connexion a la base de donnée donnée le nom $bdd a la variable connecté sinon le code ne fonctionnera pas bonne chance ^^
class Set_member{
public function create_login(){
global $bdd;
global $error;
if(isset($_POST['create'])) {
// Récupération des informations
$pseudo = filter_input(INPUT_POST, 'pseudo');
$pass = password_hash($_POST['pass'], PASSWORD_BCRYPT);
$mail = filter_input(INPUT_POST, 'mail');
// On vérifie si un utilisateur n'a pas le même mail ou pseudo
$req = $bdd->prepare('SELECT * FROM membres WHERE pseudo = :pseudo OR mail = :mail');
$req->bindvalue(':pseudo', $pseudo, PDO::PARAM_STR);
$req->bindvalue(':mail', $mail, PDO::PARAM_STR);
$req->execute();
$resultats = $req->fetchAll();
// Si non on l'ajoute dans la base de donnée
if (count($resultats) == 0) {
$req = $bdd->prepare('INSERT INTO membres(pseudo,mail,pass,date) VALUE (:pseudo,:mail,:pass,now())');
$req->bindvalue(':pseudo', $pseudo, PDO::PARAM_STR);
$req->bindvalue(':mail', $mail, PDO::PARAM_STR);
$req->bindvalue(':pass', $pass, PDO::PARAM_STR);
$req->execute();
$error = '<div class="alert alert-success" role="alert">Inscription effectuer avec succès</div>';
} else {
$error = '<div class="alert alert-danger" role="alert">Pseudo ou Email déja utilisé</div>';
}
}
}
public function access_login(){
global $bdd;
global $error;
if(isset($_POST['login'])){
$pseudo = filter_input(INPUT_POST, 'pseudo');
$req = $bdd->prepare('SELECT * FROM membres WHERE pseudo = :pseudo');
$req->bindvalue(':pseudo',$pseudo,PDO::PARAM_STR);
$req->execute();
$resultats = $req->fetchAll();
if($resultats > 0){
$result = $resultats[0];
}
// On à récupéré le hash maintenant on vérifie si le mdp est identique à celui de la bdd
$hash = $result['pass'];
if(password_verify($_POST['pass'], $hash)){
$login = 1;
}else{
$login = 0;
}
// Après quelques verifications je récupère les données de l'utilisateurs pour le connecter
if(count($resultats) > 0 AND $_COOKIE['try'] < 3 AND $login == 1){
//Si le cookie try existe le supprimer
if(isset($_COOKIE['try'])){
setcookie('try',$_COOKIE['try'] , time() - 1,null,null,false,true);
}
$_SESSION['pseudo'] = $pseudo;
$_SESSION['id'] = $result['id'];
$_SESSION['mail'] = $result['mail'];
$error = '<div class="alert alert-success" role="alert">Connexion réussite -> <a href="membre.php">Espace Membre</a></div>';
}else{
setcookie('try',$_COOKIE['try'] + 1 , time() + 300,null,null,false,true);
$cookies = $_COOKIE['try'];
if($cookies >= 3){
$error = '<div class="alert alert-primary" role="alert">Trop de Tentative réessaye dans 5 min (tu pourras de nouveau essayer à '. date("H:i:s", strtotime("+5 minute")) .') </div>';
}else {
$error = '<div class="alert alert-danger" role="alert"> Connexion rate </div>';
}
}
}
}
public function Edit_Member(){
global $bdd;
global $error;
if(isset($_POST['edit'])){
$id = $_SESSION['id'];
$new_password = $_POST['mdp'];
$confirm_password = $_POST['mdp_c'];
if($new_password == $confirm_password){
if(strlen($new_password) > 6){
$password = password_hash($_POST['mdp'], PASSWORD_BCRYPT);
$req = $bdd->prepare('UPDATE membres SET pass = :password WHERE id = :id');
$req->bindValue(':password',$password,PDO::PARAM_STR);
$req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
$error = '<div class="alert alert-success" role="alert">Mot de passe changé avec succès</div>';
}else{
$error = '<div class="alert alert-primary" role="alert"> Mot de passe trop court </div>';
}
}else{
$error = '<div class="alert alert-danger" role="alert">Vos deux mots de passe ne sont pas identique</div>';
}
}
}
public function Profil(){
global $bdd;
global $pseudo;
global $mail;
global $date;
global $admin;
$id = $_GET['id'];
$checkid = $_SESSION['id'];
if(isset($id)){
$req = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
$req->bindValue(':id',$id,PDO::PARAM_INT);
$req->execute();
$resultats = $req->fetchAll();
if($resultats != NULL ){
$result = $resultats[0];
$pseudo = $result['pseudo'];
$mail = $result['mail'];
$date = $result['date'];
if($checkid == $id){
$admin = 1;
}
}else{
die('Utilisateur inexistant');
}
}else{
header('Location: membre.php');
}
}
public function Logout(){
if(isset($_POST['logout'])){
session_unset();
session_destroy();
}
}
enfin je vous transmet tout les formulaires à utiliser en html ^^ <h2>Inscription</h2>
<form method="post">
<input type="text" name="pseudo" class="form-control" placeholder="Pseudo"> <br />
<input type="email" name="mail" class="form-control" placeholder="Mail"><br />
<input type="password" name="pass" class="form-control" placeholder="mdp"><br />
<input type="submit" value="inscription" name="create">
</form>
<br />
<h2>Connexion</h2>
<form method="post">
<input type="text" name="pseudo" class="form-control" placeholder="Pseudo"> <br />
<input type="password" name="pass" class="form-control" placeholder="mdp"><br />
<input type="submit" value="Connexion" name="login">
</form>
<h2>Editer vos informations</h2>
<form method="post">
<input type="text" class="form-control" value="<?= $pseudo ?>" readonly="readonly"> <br />
<input type="email" class="form-control" value="<?= $_SESSION['mail'] ?>" readonly="readonly"><br />
<input type="password" name="mdp" class="form-control" placeholder="Mot de passe"><br />
<input type="password" name="mdp_c" class="form-control" placeholder="Confirmer ton mdp"><br />
<input type="submit" value="Editer" name="edit">
<input type="submit" name="logout" value="Deconnexion">
</form>