Кто-нибудь хочет сделать снимок, почему эта активация электронной почты не работает? В принципе, я отправляю две переменные запроса url, которые хранят ключ активации и электронную почту как укусы. Я извлекаю их как list()
и использую их как запросы db. Все объекты db работают нормально, когда тестируются, но когда я запускаю скрипт из электронной почты, он выводит эхо-комментарий: «учетная запись теперь активна ...», но когда я проверяю базу данных, она не обновляла эти вещи Я сказал это, например, keykey, status и userid.проблема с скриптом активации электронной почты
Вот странная часть: когда у меня есть только один пользователь в базе данных, код выполняет так, как должен. Но как только я попробую добавить другого пользователя, он не обновляет новые записи в соответствии с инструкциями. Итак, мой вопрос: почему этот код работает только в том случае, если в базе данных есть один пользователь, а не когда есть еще один? Это не имеет никакого смысла. Было бы очень полезно помочь здесь.
include $_SERVER['DOCUMENT_ROOT']. '/video_dating/includes/Database.php';
list($queryString,$email) = explode('&', $_SERVER['QUERY_STRING']);
print_r($email);
$dbname = new Database();
$dbname->Query('select activationkey, id, email from users');
$userinfo = $dbname->Getdata();
foreach ($userinfo as $users)
{
if ($queryString == $users['activationkey'])
{
$dbname->Query("update users set activationkey='', status='activated', userid='1' where email='$email'");
echo "Thank you for registering. Your account is now active. Please login any time.";
}
else
echo "Sorry, your account was not activated.";
}
Эй, большое спасибо за быстрый ответ. На самом деле, и это может звучать семантически вводить в заблуждение, но идентификатор пользователя фактически связан с типом учетной записи, которую пользователь имеет (1 является базовым, 2 стандартным и 3 - премиальным), поэтому он не делает auto_increment. При активации они автоматически получают «базовую учетную запись». У меня есть поле id, которое делает auto_increment ... И да, я обязательно добавлю эту меру безопасности, но сначала я хочу, чтобы эта работа работала правильно. Итак, как насчет моего запроса на обновление: мне все еще нужно ссылаться на $ email в строке, чтобы он мог обновлять правильные записи? – bill
Сначала я думаю, вы должны проверить, действительно ли вы получите желаемые значения из QUERY_STRING. Я думаю, что вы должны взорваться '&' не '&'. '&' вы используете в HTML для кодирования '&', если он используется, например. для URI, но внутри QUERY_STRING это будет '&' –
Существует (на мой взгляд) также нет необходимости в двух шагах, просто сделайте обновление: 'update users set activationkey = '', status = 'activated', userid = '1', где email = '$ email' AND activationkey = '$ queryString''. Если обновление прошло успешно, mysql_affected_rows расскажет вам. И, конечно же, вы должны санировать/проверять данные, поступающие от пользователя, прежде чем работать с ними, например, GWW. –