その後、誰かがサイトに登録すると、通常、メールは彼のメール アカウントに送信されます。しかし、このリンクを生成するには、またはユーザー アカウントを有効にするために使用できるように、このリンクにどのような情報を入れることができますか??
2005 次
4 に答える
1
有効なユーザーを識別できるものなら何でも配置できます
1- ハッシュ値
2-暗号化された文字列
3-ガイド
ユーザーがリンクをクリックすると、値を検証できます。
于 2010-12-25T18:59:07.987 に答える
1
コードのこの部分を確認してください。
コードと電子メールを生成します。
/* 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...") ;
于 2010-12-25T19:05:04.017 に答える
0
ユーザーが登録するuniqid()
と、アクティブ化コードを作成し、データベースに保存するために使用できます。次にメールで、次のようなリンクを提供しhttp://....../activate.php?code=[uniqid()]
ますactivate.php
。
于 2010-12-25T18:59:11.543 に答える
0
アイデアは、電子メールの受信者だけが知っているリンクを持つことです。したがって、サイトでそのリンクにアクセスすると、誰かが送信した電子メールを読んでリンクをクリックしたことがわかり、登録した人と電子メールを読んだ人が同じであると推測できます。
そのため、簡単に推測できないリンクが必要です。ランダムなものを選択する (そしてそれをユーザーのプロファイルに記録する) か、ユーザー名 + シードなどをハッシュします。
于 2010-12-25T18:59:52.253 に答える