[Tuto] Inscription et connexion dans un espace membres
Posté : 31 mars 2019, 01:18
Bonsoir je vous transmet ici un code d'inscription , connexion , espace membre et profil
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
Vous pourrez récupérer les données de vos utilisateurs en effectuant des echo sur les informations si dessous
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>