首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP电子邮件验证链接的最简单方法

问PHP电子邮件验证链接的最简单方法
EN

Stack Overflow用户
提问于 2010-09-26 02:19:49
回答 3查看 17.1K关注 0票数 18

我的网站(colemansystems.psm2.co.uk)上已经有了一个高级用户登录/注册系统。但是,我希望有一封电子邮件发送给新用户,以验证他们的电子邮件地址。如果他们没有点击该链接,他们将无法访问他们的帐户。我对PHP和MySQL有一定的经验,所以请深入解释。

编辑:我用于verify.php文件的代码(用户使用GET单击的链接(例如,verify.php?d=51773199320))

代码语言:javascript
复制
$secret = $_GET['d'];
$result = mysql_query("SELECT valid FROM users WHERE secret=$secret");
while ($row = mysql_fetch_array($result))
{
    $valid = $row['valid'];
}
if ($valid == "") {
    echo"There seems to be a problem with the verification code.<br><br><br><br><br>";
}
elseif ($valid == "1")
{
    echo"Your account is already verified.<br><br><br><br><br>";
}
else
{
    mysql_query("UPDATE users SET valid = '1' WHERE secret=$secret");  
    echo "Thank you, your account is now verified and you are free to use the exclusive features!<br><br><br><br><br><br>";
}

这个安全吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-26 02:31:53

最简单的方法是根本不注册未经验证的用户。

向他们索要电子邮件地址,然后发送带有链接的电子邮件,该链接包含用散列密封的地址。收到此链接后,您可以开始注册过程。

像这样的东西

代码语言:javascript
复制
$secret = "35onoi2=-7#%g03kl";
$email = urlencode($_POST['email']);
$hash = MD5($_POST['email'].$secret);
$link = "http://example.com/register.php?email=$email&hash=$hash";

在你的register.php中添加两个隐藏字段到注册表中-电子邮件和哈希,存储它们从GET收到的值。

最后,进程注册和检查,

代码语言:javascript
复制
if (md5($_POST['email'].$secret) == $_POST['hash']) {
    //Continue registration.
}
票数 31
EN

Stack Overflow用户

发布于 2010-09-26 02:56:09

对谁来说最简单--用户,程序员,还是计算机?你在优化什么--按键的数量,代码的大小,用户体验?

最容易编码的可能是不安全的。您应该检查电子邮件地址的正确性,然后再向其发送信件。

票数 2
EN

Stack Overflow用户

发布于 2016-03-16 15:53:23

注册后,创建一个散列字符串并将其保存到临时用户表中,使用以下代码将该散列字符串发送到用户电子邮件地址

代码语言:javascript
复制
if(isset($_POST['register']))
{
$email_id=$_POST['email'];
$pass=$_POST['password'];
$code=substr(md5(mt_rand()),0,15);
mysql_connect('localhost','root','');
mysql_select_db('sample');

$insert=mysql_query("insert into verify values('','$email','$pass','$code')");
$db_id=mysql_insert_id();

$message = "Your Activation Code is ".$code."";
$to=$email;
$subject="Activation Code For Talkerscode.com";
$from = 'your email';
$body='Your Activation Code is '.$code.' Please Click On This link <a href="verification.php">Verify.php?id='.$db_id.'&code='.$code.'</a>to activate your account.';
$headers = "From:".$from;
mail($to,$subject,$body,$headers);

echo "An Activation Code Is Sent To You Check You Emails";
} 

然后创建一个验证页,然后

代码语言:javascript
复制
if(isset($_GET['id']) && isset($_GET['code']))
{
$id=$_GET['id'];
$code=$_GET['id'];
mysql_connect('localhost','root','');
mysql_select_db('sample');
$select=mysql_query("select email,password from verify where id='$id' and code='$code'");
if(mysql_num_rows($select)==1)
{
    while($row=mysql_fetch_array($select))
    {
        $email=$row['email'];
        $password=$row['password'];
    }
    $insert_user=mysql_query("insert into verified_user values('','$email','$password')");
    $delete=mysql_query("delete from verify where id='$id' and code='$code'");
 }
}

如果你有任何问题,这里有一个完整的教程http://talkerscode.com/webtricks/account-verification-system-through-email-using-php.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3794959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档