J'ai écrit un système de connexion pour mon site Web. Lorsque l'utilisateur s'enregistre, le système envoie un lien d'activation par e-mail à l'adresse e-mail fournie par l'utilisateur. Le lien contient deux paramètres, email et clé. Le paramètre e-mail a l'adresse e-mail de l'utilisateur et le paramètre clé a le code d'enregistrement afin que l'enregistrement puisse être vérifié et passé de en attente à confirmé. La page d'activation est censée extraire la colonne Statut de la ligne dont le paramètre de messagerie est défini dans la colonne Email. Pour une raison quelconque, le script décide que tout lien est valide et tente de mettre à jour le statut du compte, qu'il existe ou non.Problèmes d'activation de compte PHP
Voici mon code:
<?php
$email = $_GET['email'];
if($email == "") {
header("Location: http://www.zbrowntechnology.info/yard/register.php?message=Invalid Activation Link!");
exit;
}
$key = $_GET['key'];
if($key == "") {
header("Location: http://www.zbrowntechnology.info/yard/register.php?message=Invalid Activation Link!");
exit;
}
$con = mysql_connect("HOST", "USER", "PASS") or die(mysql_error());
mysql_select_db("zach_yardad", $con) or die(mysql_error());
$query1 = "SELECT `Status` FROM Accounts WHERE `Email`='".mysql_real_escape_string($email)."' AND `Status`='".mysql_real_escape_string($key)."'";
$result1 = mysql_query($query1) or die(mysql_error());
if(mysql_num_rows($result1) <= 0) {
header("Location: http://www.zbrowntechnology.info/yard/register.php?message=Invalid Activation Link!");
exit;
} else {
$query = "UPDATE Accounts SET `Status`='Confirmed' WHERE `Email`='$email'";
mysql_query($query) or die(mysql_error());
header("Location: http://www.zbrowntechnology.info/yard/login.php?message=Registration Complete!");
exit;
}
?>
Voici un lien d'activation valide:
http://www.zbrowntechnology.info/yard/[email protected]&key=2772190956485245
Il activer ce compte en suivant le lien, mais il sera redirigé vers la page de connexion après l'activation si le lien n'est pas valide.
EDIT:
Voici le résultat de la requête DESCRIBE `Accounts`
:
First Name varchar(65) NO NULL
Last Name varchar(65) NO NULL
Email varchar(100) NO NULL
Username varchar(65) NO NULL
Password varchar(65) NO NULL
Status varchar(65) NO NULL
Yep! Ceci l'a arrangé, devinez que j'ai négligé cela. Merci! +1 pour vous! –
heureux que vous l'avez corrigé Zach – 422
je ne comprends pas comment cela pourrait résoudre ce problème? La connexion est un paramètre facultatif, elle utilisera la dernière connexion ouverte si elle n'est pas spécifiée. Les comptes ne sont pas un mot-clé, donc '\' Accounts \ '== Accounts'. Qu'avez-vous changé? ;) – meze