проверка учетной записи электронной почты по ссылке активации

#php #html #mysql #validation #email

#php #HTML #mysql #проверка #Адрес электронной почты

Вопрос:

Я пытаюсь проверить учетную запись электронной почты, отправив ссылку для активации на указанный почтовый идентификатор. Для этого я генерирую случайное число и сохраняю его как check_activation в базе данных. Нет, проблема в том, что независимо от того, какой идентификатор я передаю по ссылке, база данных обновляется.

Часть моих кодов;

страница проверки:

 $username = $_SESSION['username'];    

include "connect.php";  

$query = "select * from data_main where username = "$username"";    

$result = mysql_query($query) or die(mysql_error());    

$row = mysql_fetch_array($result);    

$id_string = $row['check_activation'];    

$query = "update data_main set check_activation = 'validated' where  check_activation = "$id_string" ";    

$retrn = mysql_query($query) or die(mysql_error());    

if($retrn !== true)    

{

        echo "error in validation".mysql_error();    
        exit;    
}    
  

это ссылка для активации, которую я отправляю пользователю.

 $mail_body.="http://$servr/dir_name/checkactivation.php?check_activation=$textstr";
  

есть ли какой-либо другой метод, который я могу использовать для проверки учетной записи электронной почты. учетная запись должна быть активирована только после того, как пользователь нажмет на указанную ссылку и подтвердит ее.

Комментарии:

1. итак, страница проверки вызывается при нажатии на ссылку?

2. Вам нужно получить строку активации проверки из $_GET, а не из базы данных. Клиент может выйти из системы, но он должен подтвердить свою учетную запись.

3. вы должны проверить, $_GET['check_activation'] == your database check_activation string совпадают ли они, вы можете обновить свою базу данных и пометить учетную запись пользователя как активированную

4. спасибо .. теперь он работает.

Ответ №1:

попробуйте это

 include      "connect.php";
$username  = $_SESSION['username'];
$id_string = $_GET['check_activation'];
$query     = "select * from data_main where username = '{$username}' AND check_activation = '{$id_string}'";    
$result    = mysql_query($query) or die(mysql_error());    
$rows      = mysql_num_rows($result);
$retrn     = false;    

if($rows == 1)
{
    $query     = "update data_main set check_activation = 'validated' where  check_activation = '{$id_string}' ";    
    $retrn     = mysql_query($query) or die(mysql_error());
}
else
{
    echo "error in validation".mysql_error();    
    exit;    
}
  

ПРИМЕЧАНИЕ:

Вы должны использовать MySQLi или PDO для подключения к DbConnection