繁体   English   中英

如何用php实现电子邮件验证?

[英]How to implement email verification with php?

我正在使用php和laravel作为框架。 我想让用户能够通过电子邮件激活他们的帐户。

但是,我没有这方面的经验。 我已经设置了一个要求用户名,电子邮件和密码的表单。

这仍然是2013年最好的方式吗?

http://net.tutsplus.com/tutorials/php/how-to-implement-email-verification-for-new-members/?search_index=8

所以:

  1. 我需要为散列密码创建一个数据库字段。
  2. 在创建用户帐户时,为该字段创建一个随机密码并通过电子邮件发送给他们。
  3. 将URL中的密码和用户ID链接到一个页面,该页面将电子邮件密码与db字段中的密码进行比较。
  4. 密码匹配时激活帐户(将活动设置为1)。

沿着那条路线的东西?

电子邮件验证是一个简单的过程,有两种方法可以通过向用户电子邮件地址发送代码来验证电子邮件,也可以通过发送链接来完成两个相同的工作,这里的示例代码来自教程http://talkerscode.com/webtricks/account-verification-在TalkersCode上使用system-through-email-using- php.php

// Table Scheme for Verify Table
CREATE TABLE `verify` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` text NOT NULL,
`password` text NOT NULL,
`code` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1

// Table Scheme for verified_user table
CREATE TABLE `verified_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` text NOT NULL,
`password` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1


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";
}

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'");
}
}

在你的解释中,你忘记了最重要的部分:随机哈希。 比较哈希,而不是密码。 指南正确解释。

该指南看起来很稳固。

我会实现一个更好的随机密码生成器, rand(1000,5000)真的不是很好。 您甚至可以设置首次登录,要求输入密码。

警告:根据PHP手册,EREGI已弃用! http://php.net/manual/en/function.eregi.php

preg_match将是一个不错的选择。 http://www.php.net/manual/en/function.preg-match.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM