@Valax

Подтверждение почты — PHP?

Прошу помощи знающих, имеется код отправки писем на почту с ссылкой для подтверждения почты.
$login = $_POST;
$activ = mysql_query("SELECT id FROM users WHERE login='$login'");
$id_activ = mysql_fetch_array($activ);
$activation = md5($id_activ['id']);
$headers = "From: <support@site.ru>\r\nContent-type:text/html;charset=utf-8\r\n";
$subject = "Подтверждение регистрации!";
$subject = "=?utf-8?b?".base64_encode($subject)."?=";
$message = "Здравствуйте! Вы зарегистрировались бла-бла.\nВаш логин: ".$data['login']."\n 
Чтобы активировать ваш аккаунт, перейдите по ссылке:\n
http://site//activation.php?login=".$data['login']."&act=".$activation."\n\n
С уважением, Администрация сайта www.site.ru";
mail($data['email'], $subject, $message, $headers, "Content-type:text/plain; Charset=utf-8\r\n") or die (mysql_error());


все вроде хорошо, письмо отправляется, ссылка генерируется, но при переходе по ссылке, не удается активировать аккаунт, значение столбца в БД не изменяется с 0 на 1, выводится сообщение "Ошибка! Ваш аккуант не активирован. Обратитесь к администратору.", указанное в activation.php, других ошибок нет. В чем может быть проблема?

Сам код activation.php
if(isset($_GET['act']) AND isset($_GET['login'])) {
$act = $_GET['act'];
$act = stripslashes($act);
$act = htmlspecialchars($act);
 
$login = $_GET['login'];
$login = stripslashes($login);
$login = htmlspecialchars($login);
}
else{
exit("Вы зашил на страницу без кода подтверждения!");
}
 
$activ = mysql_query("SELECT id FROM users WHERE login='$login'"); //извлекаем идентификатор пользователя с данным логином
$id_activ = mysql_fetch_array($activ); 
$activation = md5($id_activ['id']);
if ($activation == $act) {//сравниваем полученный из url и сгенерированный код
mysql_query("UPDATE users SET activation='1' WHERE login='$login'");
echo "Ваш аккуант <strong>".$login."</strong> успешно активирован! <br><a href='index.php'>Главная страница</a>";
}
else {
echo "Ошибка! Ваш аккуант не активирован. Обратитесь к администратору.<br><a href='index.php'>Главная страница</a>";
}

В чем может быть проблема?
ini_set('display_errors',1);
error_reporting(E_ALL); ошибок не показывают
  • Вопрос задан
  • 1817 просмотров
Пригласить эксперта
Ответы на вопрос 1
Не понял, как выглядит код активации который вы отправляете? Код активации равен md5(userId)? Кто угодно может активировать всех подряд? И у вас sql инъекции доступны ;(
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы