Confirmation par mail- PHP
mik12ED
Messages postés
36
Date d'inscription
Statut
Membre
Dernière intervention
-
mik12ED Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
mik12ED Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
J'ai créé un espace membre. Donc, j'ai fait parvenir un mail de confirmation de compte et le pb c'est eu le PHP m'affiche direct "L'utilisateur n'existe pas !"
Très étrange je trouve.
SI quelqu'un à une astuce ou a trouvé l'erreur ou le pb je suis preneur merci.
<?php
$bdd = new PDO('mysql:host=localhost;dbname=candidats', 'root', 'root');
if(isset($_GET['mail'], $_GET['key']) AND !empty($_GET['mail']) AND !empty($_GET['key']))
{
$mail = htmlspecialchars(urldecode($_GET['mail']));
$key = htmlspecialchars($_GET['key']);
$requser = $bdd->prepare("SELECT * FROM candidats WHERE mail = ? AND confirmkey = ?");
$requser->execute(array($mail, $key));
$userexist = $requser->rowCount();
if($userexist == 1)
{
$user = $requser->fetch();
if($user['confirme'] == 0)
{
$updateuser = $bdd->prepare("UPDATE candidats SET confirme = 1 WHERE mail = ? AND confirmkey = ?");
$updateuser->execute(array($mail, $key));
echo "Votre compte a bien été confirmé ! ";
}
else
{
echo "Votre compte a déjà été confirmé !";
}
}
else
{
echo "L'utilisateur n'existe pas !";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Confirmation de compte </title>
<meta charset="utf8"/>
</head>
<body>
<h1>Confirmation de compte </h1>
</body>
</html>
J'ai créé un espace membre. Donc, j'ai fait parvenir un mail de confirmation de compte et le pb c'est eu le PHP m'affiche direct "L'utilisateur n'existe pas !"
Très étrange je trouve.
SI quelqu'un à une astuce ou a trouvé l'erreur ou le pb je suis preneur merci.
<?php
$bdd = new PDO('mysql:host=localhost;dbname=candidats', 'root', 'root');
if(isset($_GET['mail'], $_GET['key']) AND !empty($_GET['mail']) AND !empty($_GET['key']))
{
$mail = htmlspecialchars(urldecode($_GET['mail']));
$key = htmlspecialchars($_GET['key']);
$requser = $bdd->prepare("SELECT * FROM candidats WHERE mail = ? AND confirmkey = ?");
$requser->execute(array($mail, $key));
$userexist = $requser->rowCount();
if($userexist == 1)
{
$user = $requser->fetch();
if($user['confirme'] == 0)
{
$updateuser = $bdd->prepare("UPDATE candidats SET confirme = 1 WHERE mail = ? AND confirmkey = ?");
$updateuser->execute(array($mail, $key));
echo "Votre compte a bien été confirmé ! ";
}
else
{
echo "Votre compte a déjà été confirmé !";
}
}
else
{
echo "L'utilisateur n'existe pas !";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Confirmation de compte </title>
<meta charset="utf8"/>
</head>
<body>
<h1>Confirmation de compte </h1>
</body>
</html>
A voir également:
- Confirmation par mail- PHP
- Confirmation de lecture whatsapp - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Confirmation de lecture gmail - Guide
- Live.fr mail - Forum Mail
1 réponse
Salut,
Un petit tour sur la doc de PDO::rowCount() : https://www.php.net/manual/fr/pdostatement.rowcount.php
PDOStatement::rowCount() retourne le nombre de lignes affectées par la dernière requête DELETE, INSERT ou UPDATE exécutée par l'objet PDOStatement correspondant.
Le 2ème exemple de cette doc te donne la solution : https://www.php.net/manual/fr/pdostatement.rowcount.php#example-1034
Bonne journée
Un petit tour sur la doc de PDO::rowCount() : https://www.php.net/manual/fr/pdostatement.rowcount.php
PDOStatement::rowCount() retourne le nombre de lignes affectées par la dernière requête DELETE, INSERT ou UPDATE exécutée par l'objet PDOStatement correspondant.
Le 2ème exemple de cette doc te donne la solution : https://www.php.net/manual/fr/pdostatement.rowcount.php#example-1034
Bonne journée
Je vais essayer de mon cote pour trouver tout seul évidemment mais comment toi tu ferais ?
Merci beaucoup
Il suffit de remplacer ta requête sql par un SELECT COUNT(*) et d'utiliser fetchColumn à la place de rowCount :
Essaye d'enlever htmlspecialchars et urldecode, ce n'est pas une bonne pratique d'insérer des entités html en bdd et urldecode ne devrait pas être nécessaire.
Tu peux également essayer d'utiliser une requête simple à la place de la requête préparée, ce qui te permet d'afficher la requête pour la tester directement dans ton client sql (PhpMyAdmin par exemple).