Я написал систему входа для своего сайта. Когда пользователь регистрируется, система отправляет ссылку активации на адрес электронной почты, предоставленный пользователем. Ссылка содержит два параметра: адрес электронной почты и ключ. Параметр электронной почты имеет адрес электронной почты пользователя, а ключевой параметр имеет регистрационный код, чтобы регистрация могла быть проверена и изменена с ожидающего подтверждения. На странице активации предполагается получить столбец «Статус» из строки, в которой указан параметр электронной почты в столбце «Электронная почта». По какой-то причине сценарий решает, что любая ссылка действительна, и пытается обновить статус учетной записи, существует ли она или нет.Вопросы активации учетной записи PHP
Вот мой код:
<?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;
}
?>
Вот действительная ссылка активации:
http://www.zbrowntechnology.info/yard/[email protected]&key=2772190956485245
Он будет активировать эту учетную запись, перейдя по ссылке, но он будет перенаправлять на страницу входа после активации, если ссылка недействительна.
EDIT:
Вот результат запроса 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
Название colomn Статус. Он содержит регистрационный ключ, и после его активации он содержит строку «Подтверждено». Итак, я должен проверить, не является ли столбец Status = ключ $, не так ли? – 2010-11-27 01:40:54
Это нормально, если вам это удобно. Попробуйте распечатать $ query1 ;. Также как насчет try, print mysql_num_rows ($ result1) ;. это поможет вам понять, что происходит не так. – Haluk 2010-11-27 01:48:07
Правильный запрос возвращается путем печати $ query1: _SELECT `Status` FROM Accounts WHERE` Email`='[email protected] 'И `Status` =' 2772190956485245'_ – 2010-11-27 01:54:25