Empêcher un utilisateur de se connecter si compte non activé

Résolu/Fermé
TheDialge-123 Messages postés 239 Date d'inscription samedi 18 février 2012 Statut Membre Dernière intervention 3 août 2016 - 3 août 2016 à 00:42
TheDialge-123 Messages postés 239 Date d'inscription samedi 18 février 2012 Statut Membre Dernière intervention 3 août 2016 - 3 août 2016 à 13:27
Bonjour , récemment j'ai regardé un tutoriel pour envoyer un mail de confirmation à un utilisateur lorsqu'il s'inscrit ,il doit donc activer son comte .
le problème , c'est que je n'arrive pas à faire en sorte que ma page login.php détecte si l'utilisateur à activé son compte et donc l'empêcher de se connecter , je vous passe le code :

voici la page register.php (celle qui envoie l'email)

<html>
<body>
<?php

$bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '');

if(isset($_POST['forminscription']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail2']);
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
{
$pseudolength = strlen($pseudo);
if($pseudolength <= 255)
{
if($mail == $mail2)
{
if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{
$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
$reqmail->execute(array($mail));
$mailexist = $reqmail->rowCount();
if($mailexist == 0)
{



if($mdp == $mdp2)
{
$longueurKey = 15;
$key = "";
for($i=1;$i<$longueurKey;$i++){
$key .= mt_rand(0,9);
}

$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, confirmkey) Values (?, ?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp, $key));

$header="MIME-Version: 1.0\r\n";
$header.= 'From:"epsis.pe.hu"<webmaster@epsis.pe.hu>'."\n";
$header.='Content-Type:text/html; charset="utf-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';

$message='
<html>
<body>
<div align="center">
<center><h2>Validation de votre inscription sur Epsis</h2></center>
<center>Bonjour , nous vous remercions pour votre inscription sur Epsis.<br />
Pour activer votre compte, veuillez cliquer sur le lien ci dessous ou copier/coller dans votre navigateur internet.<br /><br /></center>
<center><a href="http://epsis.pe.hu/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'" rel="nofollow" target="_blank">Confirmer mon compte</a></center><br />
<center>ou</center><br />
<center><a href="http://epsis.pe.hu/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'" rel="nofollow" target="_blank">http://epsis.pe.hu/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'</a></center><br />
<center>-----------------------------------</center><br /><br />
<center>Ceci est un mail automatique, Merci de ne pas y répondre.</center>



</div>
</body>
</html>
';

mail($mail, "Confirmation de votre compte", $message, $header);


$erreur = "<font color='green'>Votre compte a bien été créé , veuillez l'activer depuis votre boite mail</font>";

}
else
{
$erreur = "Vos 2 mots de passe ne correspondent pas";
}
}
else
{
$erreur = "Cette adresse mail est déjà utilisée";
}
}
else
{
$erreur = "Votre adresse mail n'est pas valide";
}
}
else
{
$erreur = "Vos adresses mail ne correspondent pas";
}
}
else
{
$erreur = "Votre pseudo ne doit pas dépasser 255 caractères";
}
}
else
{
$erreur = "Tous les champs doivent être complétés";
}
}
?>


<div class="register">

<h2>Inscription</h2>
<br /><br /><br />

<form method="POST" action="">
<table>
<tr>
<td>
<label for="pseudo">Pseudo : </label>
</td>
<td>
<input type="text" placeholder="Pseudo" name="pseudo" id="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>"/>
</td>
</tr>
<tr>
<td>
<label for="mail">Email : </label>
</td>
<td>
<input type="email" placeholder="Email" name="mail" id="mail" value="<?php if(isset($mail)) { echo $mail; } ?>"/>
</td>
</tr><tr>
<td>
<label for="mail2">Confirmez votre Email : </label>
</td>
<td>
<input type="email" placeholder="Confirmation de l'Email" name="mail2" id="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>"/>
</td>
</tr>
<tr>
<td>
<label for="motdepasse">Mot de passe : </label>
</td>
<td>
<input type="password" placeholder="Mot de passe" name="mdp" id="motdepasse"/>
</td>
</tr><tr>
<td>
<label for="motdepasse2">Confirmation du mot de passe : </label>
</td>
<td>
<input type="password" placeholder="Confirmation du mdp" name="mdp2" id="motdepasse2"/>
</td>
</tr>

</table><br />
<input type="submit" value="S'inscrire" name="forminscription"/>
</form>
<?php
if(isset($erreur))
{
echo '<font color="red">'.$erreur."</font>";
}
?>
</div>












</body>
</html>


voici ensuite confirmation.php (celle qui confirme la clé)

<!DOCTYPE html>
<html>
<head>
<title>Activation de votre compte</title>
<link rel="stylesheet" href="style.css">

</head>
<body>

<center><div class="titre"><h1>Activation du compte</h1></div></center></br></br>
<?php
$bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '');
if(isset($_GET['pseudo'], $_GET['key']) AND !empty($_GET['pseudo']) AND !empty($_GET['key'])) {
$pseudo = htmlspecialchars(urldecode($_GET['pseudo']));
$key = htmlspecialchars($_GET['key']);

$requser = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ? AND confirmkey = ?");
$requser->execute(array($pseudo, $key));
$userexist = $requser->rowCount();

if($userexist == 1){
$user = $requser->fetch();
if($user['confirme'] == 0){
$updateuser = $bdd->prepare("UPDATE membres SET confirme = 1 WHERE pseudo = ? AND confirmkey = ?");
$updateuser->execute(array($pseudo,$key));
echo '<font color="red">Félicitation , votre compte est activé </font> <a href="http://epsis.pe.hu/login.php" rel="nofollow" target="_blank">connectez vous</a>';

}else{
echo "<font color='green'>Votre compte est déjà activé </font><a href='http://epsis.pe.hu/login.php' rel="nofollow" target="_blank">connectez vous</a>";

}

} else {
echo "<font color='red'>Ce compte n'existe pas </font><a href='http://epsis.pe.hu/register.php' rel="nofollow" target="_blank">inscrivez vous</a>";

}

}

?>





<footer>
<center><p>EPSIS - Réseau social</p></center>
</footer>



</body>
</html>



et ensuite voilà login.php (la page qui doit empêcher l'utilisateur de e connecter si il n'a pas activé son compte par mail)

<!DOCTYPE html>
<html>
<body>
<?php
session_start();

$bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '');

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)
{
$userinfo = $requser->fetch();
$_SESSION['id'] = $userinfo['id'];
$_SESSION['pseudo'] = $userinfo['pseudo'];
$_SESSION['mail'] = $userinfo['mail'];
header("Location: profil.php?id=".$_SESSION['id']);
}
else
{
$erreur = "Adresse mail ou mot de passe incorrect";
}


}
else
{
$erreur = "Tous les champs doivent être complétés";
}
}






?>


<div class="login">

<h2>Connexion</h2>
<br /><br /><br />
<form method="POST" action="">
<table>
<tr>
<td>
<label for="">Email : <label/>
</td>
<td>
<input type="email" name="mailconnect" placeholder="Mail" /><br />
</td>
</tr>
<tr>
<td>
<label>Mot de passe : <label/>
</td>
<td>
<input type="password" name="mdpconnect" placeholder="Mot de passe" /><br />
</td>
</tr>
</table>
<input type="submit" name="formconnexion" value="Connexion" />

</form>












<?php
if(isset($erreur))
{
echo '<font color="red">'.$erreur."</font>";
}
?>
</div>












</body>
</html>



Pourriez vous m'aider ? merci d'avance :)
--
A voir également:

1 réponse

Utilisateur anonyme
3 août 2016 à 08:46
Bonjour

Ta confirmation consiste à mettre le champ 'confirme' de la table 'membres' à 1.
Pourquoi ne vérifies-tu pas cette valeur lors de la connexion ? Il suffit de rajouter 'AND confirme=1' à ta requête.
2
TheDialge-123 Messages postés 239 Date d'inscription samedi 18 février 2012 Statut Membre Dernière intervention 3 août 2016 5
3 août 2016 à 13:27
rah merci tu me sauve la vie j'avais presque tout essayé sauf ça , je te remercie beaucoup
0