Ich habe ein Anmeldesystem für meine Website geschrieben. Wenn der Benutzer sich anmeldet, sendet das System einen Aktivierungslink per E-Mail an die vom Benutzer angegebene E-Mail-Adresse. Der Link enthält zwei Parameter, E-Mail und Schlüssel. Der E-Mail-Parameter enthält die E-Mail-Adresse des Benutzers, und der Schlüssel-Parameter enthält den Registrierungscode, damit die Registrierung überprüft und von "ausstehend" in "bestätigt" geändert werden kann. Die Aktivierungsseite soll die Spalte "Status" aus der Zeile abrufen, in der der Parameter "E-Mail" in der Spalte "E-Mail" festgelegt ist. Aus irgendeinem Grund entscheidet das Skript, dass jeder Link gültig ist, und versucht, den Status des Kontos zu aktualisieren, unabhängig davon, ob er existiert oder nicht.
Hier ist mein 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;
}
?>
Hier ist ein gültiger Aktivierungslink:
http://www.zbrowntechnology.info/yard/activate.php?email=zach@zbrowntechnology.com&key=2772190956485245
Es aktiviert dieses Konto, indem es dem Link folgt, leitet aber nach der Aktivierung zur Anmeldeseite weiter, wenn der Link nicht gültig ist.
EDIT。
Hier ist das Ergebnis der Abfrage 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