问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php验证邮箱格式

发布网友 发布时间:2022-04-06 01:25

我来回答

5个回答

懂视网 时间:2022-04-06 05:46

php实现邮箱验证的方法:首先下载phpMailer;然后解压到项目根目录下;接着需要一台邮件服务器;最后在“config.php”中配置邮箱相关的信息并创建用于发送邮件的公用方法即可。

推荐:《PHP视频教程》

一、Introduction

需求是用户在注册时填写email,注册后,需要到邮箱验证后才能登陆。

二、实现

验证流程,注册成功后,为用户生成一个验证码;将验证码以连接方式发到用户邮箱;用户点击连接将验证码发回网站;网站验证这个验证码是否是为这个用户生成的验证码;帐号需要在24小时内验证,否则帐号失效。

1. 准备工作

需要添加phpMailer类来发邮件。下载phpMailer,然后解压到项目根目录下。

发邮件使用smtp协议,端口是25;收邮件,使用pop3协议,端口号是110。还需要一台邮件服务器。可以自己搭建,也可以使用第三方的。使用第三方的邮件服务器需要在第三方注册一个帐号。登陆开启smtp协议。

在config.php中配置邮箱相关的信息。

 'EMAIL' => array(

 'host' => 'smtp.163.com',

 'user' => 'youxiangzhanghao',

 'password' => 'password', //此处的密码为user邮箱在开启smtp时设置的授权密码。 

),

2. 创建用于发送邮件的公用方法

/**

 * 发送邮件的方法

 */

functionsendMail($to, $title, $content)

{

  require_once('./PHPMailer-5.2.14/class.smtp.php');

  require_once('./PHPMailer-5.2.14/class.phpmailer.php');

  $mail = new PHPMailer();

  //设置为发送邮件

  $mail->IsSMTP();

  //是否允许发送html代码为邮件内容

  $mail->IsHTML(true);

  $mail->CharSet = 'utf-8';

  //是否需要身份验证

  $mail->SMTPAuth = true;

  //邮件服务器的帐号信息

  $mailConfig = C('EMAIL');

  $mail->From =$mailConfig['user'].'@163.com';

  $mail->FromName =$mailConfig['user'];

  $mail->Host = $mailConfig['host'];

  $mail->Username = $mailConfig['user'];

  $mail->Password =$mailConfig['password'];

  //发邮件的端口号

  $mail->Port = 25;

  //收件人

  $mail->AddAddress($to);

  //邮件标题

  $mail->Subject = $title;

  //邮件内容

  $mail->Body = $content;

  return($mail->send());

}

在控制器的首页方法中测试

//测试发送邮件

var_dump(sendMail('haha@163.com','phptestemail', '<a href="http://www.phptest.com">hahahah</a>'));

3. 修改会员表,添加email字段和验证码字段

email varchar(150) not null comment '邮箱',

email_chkcode char(32) not null default '' comment '邮箱验证码',

email_chkcode_time int unsigned not null comment '邮箱验证码生成时间',

key email_chkcode(email_chkcode)

4.修改注册,必须填email

修改注册表单,添加email字段;修改member模型,允许插入email字段,并增加email字段为email的验证规则。

5.注册之前生成email验证码

在_before_insert()方法中

   //生成email验证码

   $data['email_chkcode']= md5(uniqid());

   $data['email_chkcode_time']= time();

6. 注册之后将验证码发给用户邮箱

  /**

  * 注册后的钩子函数

  */

  protected function _after_insert($data,$option)

  {

   $content = "欢迎注册,请点击以下完成验证:<p><a href='http://www.php2.com/eshop/index.php/Home/Member/email_chk/code/{$data['email_chkcode']}'>请点击</a></p>";

   sendMail($data['email'],'php2网站邮箱验证', $content);

  }

7. 在member控制器添加方法完成验证

 /**

 * 完成邮箱验证方法

 */

 public function email_chk()

 {

 //接收验证码

 $code = I('get.code');

 //查询这个验证码是否有效

 $member = D('Admin/Member');

 $info = $member->field('id,email_chkcode_time')->where(array(

  'email_chkcode' => $code,

 ))->find();

 if($info)

 {

  if((time() -$info['email_chkcode_time']) > 86400)

  {

  //帐号过期,删除这个帐号

  $member->delete($info['id']);

  $this->error('验证码已过期,帐号已经删除,请重新注册', U('regist'));

  exit;

  }

  else

  {

  //验证通过,将验证码清空

  $member->where(array(

   'id' => $info['id'],

  ))->setFielf('email_chkcode', '');

  $this->success('验证通过,请登陆', U('login'));

  exit;

  }

 }

 else

 {

  $this->error('参数错误', U('/'));

  exit;

 }

 }

8. 修改会员模型中的登陆方法

  //判断这个帐号是否通过验证码验证

  if(!empty($user['email_chkcode']))

  {

   $this->error= '必须验证后才可以登陆';

   returnfalse;

  }

9. 修改注册代码

如果一个帐号已经存在,但是过期没有验证,可以删除这个帐号。

添加注册时的表单验证,为username和email添加关于唯一性和注册验证码的验证。

array('email','chk_un_email', 'email已经存在!', 1,'callback', 3),

array('username','chk_un_user', '用户名已经存在!', 1,'callback', 3),

  //验证已经存在的邮箱是否通过验证

  public function chk_un_email()

  {

   $email = I('post.email');

   $username =I('post.username');

   $hasEmail =$this->field('id,email_chkcode,email_chkcode_time')->where(array(

    'email' =>$email,

   ))->find();

   if($hasEmail)

   {

    if(empty($hasEmail['email_chkcode']))

    {

     returnfalse;

    }

    else

    {

     if(time() -$hasEmail['email_chkcode_time'] > 86400)

     {

      $this->delete($hasEmail['id']);

      returntrue;

     }

     else

     {

      returnfalse;

     }

    }

   }

   else

   {

    return true;

   }

  }



  //验证已经存在的用户名是否通过验证

  public function chk_un_user()

  {

   $username =I('post.username');

   $hasUsername =$this->field('id,email_chkcode,email_chkcode_time')->where(array(

    'username' =>$username,

   ))->find();

   if($hasUsername)

   {

    if(empty($hasUsername['email_chkcode']))

    {

     returnfalse;

    }

    else

    {

     if(time() -$hasUsername['email_chkcode_time'] > 86400)

     {

      $this->delete($hasUsername['id']);

      returntrue;

     }

     else

     {

      returnfalse;

     }

    }

   }

   else

   {

    return true;

   }

  }

10. 测试

热心网友 时间:2022-04-06 02:54

PHP正则表达式验证邮箱示例如下:
<?php
$email='1909970983@.qq.com';
$pattern="/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i";
if(preg_match($pattern,$email)){
echo '邮箱验证通过!';
} else{
echo '邮箱格式错误!';
}
?>

热心网友 时间:2022-04-06 04:12

PHP正则表达式验证邮箱示例如下:
<?php
$email='1909970983@.qq.com';
$pattern="/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i";
if(preg_match($pattern,$email)){
echo
'邮箱验证通过!';
}
else{
echo
'邮箱格式错误!';
}
?>

热心网友 时间:2022-04-06 05:47

else
{
echo "请输入邮箱地址:";
echo "<script>history.go(-1)</script>";
}

热心网友 时间:2022-04-06 07:38

随你便吧。有简单的方式你不用!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在公交车上实施扒窃,会受到怎样的处罚? 交通违法行为识别 公交车扒窃会如何处罚? 郑州鱼缸清洗找哪家公司做得比较好? 郑州有没有专业维修鱼缸,清洗鱼缸的? ...的鱼缸,放在办公室养些鱼水草之类的。郑州哪里有卖这样的鱼缸。_百... 我们公司想要定做个观赏鱼缸,不知道郑州哪家公司最专业? 谁知道郑州生态鱼缸定做哪家做的效果最好? 联想电脑启用无线功能的功能键? 笔记本电脑怎么连接网笔记本电脑怎样连接无线网 网站用PHP架构的,想做用户邮箱验证功能。只在域名提供商买了域名和空间和数据库,是不是还要买企业邮 php如何实现用购买的网站空间的邮箱发验证邮件给用户? PHP中如何实现常用邮箱的基本判断 PHP怎么实时验证邮箱是否被注册了? 去掉网站域名后面的index.php 怎么把织梦网这个后面网址去掉index.php?upcache=1 EyouCms怎么去除URL中的index.php joomla如何去掉index.php TP的URL重写去掉index.php在IIS下如何实现 关于PHP获取URL后去掉index.php的问题 怎么去掉首页后面自带的index.html godaddy服务器是WINDOWS服务器安装了Typecho最新版,登录后出现:登录时显示index.php&#47;action&#47;login 404, wordpress固定链接地址怎么去掉 index.php 如何去掉index.php WordPress链接中如何去掉index.php? typecho 为什么url里有index.php 怎么把中间的index.php 去掉 typecho设置伪静态怎么隐藏intex.php 如何去掉index.php目录 php中浮点型怎样转化成整型 php源码手机验证更换成邮箱验证 关于ThinkPHP3.2.3邮箱验证的方法 对php中正则表达式验证邮箱代码的疑惑,求高人指点? 如何在phpcms中设置smtp验证发送邮件 php邮件发送验证码问题 PHP发送邮箱验证码该怎么做,步骤是怎么样的,有没有免费的邮箱平台? PHP注册用户验证邮箱 php 网站邮箱验证,需要进邮箱点击连接 php正则表达式怎么验证邮箱格式? 正则表达式如何验证邮箱 PHP邮件验证找回密码 PHP中怎么批量删除数据表中的数据 怎么用thinkphp批量删除数据呀!要有复选框来做 PHP 批量删除 php 批量删除文件 thinkphp5数据库怎么批量删除 如何在phpmyadmin中删除数据库? php批量删除 新手请教PHP批量删除数据库里的数据语法! php 批量删除某种大小范围的文件