Как отправить письмо после регистрации - PullRequest
0 голосов
/ 25 декабря 2010

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

Ответы [ 4 ]

1 голос
/ 25 декабря 2010

Проверьте эту часть кода:

Генерируйте код и адрес электронной почты:

/* if $acces = 0 everything is perfect so the system send a confirmation mail */ 
                                if($acces == 0) 
{ 
    print("<br>A mail has been send to " . $mail . "<br><br>") ; 

    /* prepare the vars */ 
    $activ = $user . $pass ; 
    $code = md5($activ) ; 
    /* to how send to mail */ 
    $to = $mail ; 
    /* prepare the subject */ 
    $subject = "You need to confirm you registration to " . $_SERVER['HTTP_HOST'] ; 
    /* start writing the message */ 
    $message = "Hello " . $user . ",\r\n\r\n" ; 
    $message .= "Thank you for registering at " . $_SERVER['HTTP_HOST'] . " Your account is created and must be activated before you can use it.\r\n" ;
    $message .= "To activate the account click on the following link or copy-paste it in your browser :\r\n\r\n" ; 
    $message .= "http://" . $_SERVER['HTTP_HOST'] . "/~carron/registration/register_send.php?user=" . $user . "&activation=" . $code . "\r\n\r\n" ; 
    $message .= "After activation you may login to http://" . $_SERVER['HTTP_HOST'] . " using the following username and password:\r\n\r\n" ; 
    $message .= "Username - " . $user . "\r\nPassword - " . $pass . "\r\n" ; 

    /* To send HTML mail, you can set the Content-type header. */ 
    $headers  = "MIME-Version: 1.0"; 
    $headers .= "Content-type: text/html; charset=iso-8859-1"; 

    /* set up additional headers */ 
    $headers .= "To: " . $to . "<br>\n" ; 
    $headers .= "From: " . $from . $addmail ; 

    /* writing data in the base */ 
    $query = "INSERT INTO registration (user, pass, activ, mail) VALUES ('$user', '$pass', '$code', '$mail') ;" ; 

    $result = mysql_query($query, $db); 

    if ($result == false) 
        die("Failed " . $query); 
    else 
        { 
            /* everything went well so we can mail it now */ 
            mail($to, $subject, $message, $headers); 
        } 
} 

Проверьте активацию:

/* controle if the validation link is right */ 
$x = 0 ; 

$query = "SELECT user, pass, activ, mail FROM registration WHERE user = '" . $username . "';" ; 

$result = mysql_query($query, $db); 

if ($result == false) die("Failed " . $query); 


while ($fields = mysql_fetch_row($result)) 
        { 
         for ($i=0, $max=sizeof($fields) ; $i < $max ; $i++) 
                { 
                    $tmp[$i] = $fields[$i] ; 
                } 

         /* the activation link is right so we can update 
         the datas in the data base */ 
         if($activation == $tmp[2] AND $username == $tmp[0]) 
            { 
                $x = 1 ; 
                $query2 = "UPDATE registration SET activated = '1' WHERE user = '" . $username . "' AND activ = '" . $activation . "' ;" ; 

                $result2 = mysql_query($query2, $db); 

                if ($result2 == false) 
                    die("Failed " . $query2); 
            } 
         else 
            $x = -1 ; 
        } 

/* give a confirmation message to the user */ 
if($x == 1) 
    print($username . " your activation has been done perfectly<br> Thank you...") ; 
else 
    print($username . " your activation has not been done corectly<br> Please try again later...") ; 

Скрипт из PHPclasses.орг

1 голос
/ 25 декабря 2010

Вы можете разместить любую вещь, которая может идентифицировать действительного пользователя

1- Значение хэша

2- Зашифрованная строка

3- Guid

и когда пользователь нажимает на ссылку, вы можете проверить значение.

0 голосов
/ 25 декабря 2010

Идея состоит в том, чтобы иметь ссылку, которую знает только получатель письма.Поэтому, когда эта ссылка посещается на вашем сайте, вы знаете, что кто-то прочитал отправленное вами электронное письмо и щелкнул по ссылке, и вы можете предположить, что зарегистрированное и прочитавшее письмо лицо совпадают.1002 * Таким образом, вам просто нужна ссылка, которую трудно угадать.Выберите что-нибудь случайное (и запишите это в профиле пользователя) или хешируйте имя пользователя + начальное число или что-то в этом роде.

0 голосов
/ 25 декабря 2010

Когда пользователь зарегистрирован, вы можете использовать uniqid() для создания кода активации и сохранения в базе данных.Тогда в почте, дайте ссылку, как: http://....../activate.php?code=[uniqid()]В activate.php вы можете прочитать код активации из базы данных и проверить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...