用Php编写注册后Email激活验证的实例代码


Posted in PHP onMarch 11, 2013

总共需两个页面,register.php 和 verify.php

1. 用户注册表格 register.php

 <html> 
 <body> 
   <form action="register.php" method="post" name="register"> 
      用户名:<input type="text" name="username" /> 
      密码:<input type="password" name="password" /> 
      电子邮件:<input type="text" name="email" /> 
      <input type="submit" value="注册" /> 
   </form> 
 </body> 
 </html>

2. 创建用户数据表格 Users

 CREATE TABLE IF NOT EXISTS `users` ( 
   `id` int(11) NOT NULL auto_increment, 
   `status` varchar(20) NOT NULL, 
   `username` varchar(20) NOT NULL, 
   `password` varchar(20) NOT NULL, 
   `email` varchar(20) NOT NULL, 
   `activationkey` varchar(100) NOT NULL, 
   PRIMARY KEY  (`id`), 
   UNIQUE KEY `username` (`username`), 
   UNIQUE KEY `email` (`email`), 
   UNIQUE KEY `activationkey` (`activationkey`) 
 ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

3. 创建验证码 用户注册信息存入数据表
我们使用状态‘verify' 来表示尚未激活的用户。

 $activationKey =  mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand(); 
 $username = mysql_real_escape_string($_POST[username]); 
 $password = mysql_real_escape_string($_POST[password]); 
 $email = mysql_real_escape_string($_POST[email]);   
 $sql="INSERT INTO users (username, password, email, activationkey, status) VALUES ('$username', '$password', '$email', '$activationKey', 'verify')";

4. 发送验证码

 echo "An email has been sent to $_POST[email] with an activation key. Please check your mail to complete registration."; 
 ##Send activation Email 
 $to      = $_POST[email]; 
 $subject = " YOURWEBSITE.com Registration"; 
 $message = "Welcome to our website!\r\rYou, or someone using your email address, has completed registration at YOURWEBSITE.com. You can complete registration by clicking the following link:\rhttp://www.YOURWEBSITE.com/verify.php?$activationKey\r\rIf this is an error, ignore this email and you will be removed from our mailing list.\r\rRegards,\ YOURWEBSITE.com Team"; 
 $headers = 'From: noreply@ YOURWEBSITE.com' . "\r\n" .   
     'Reply-To: noreply@ YOURWEBSITE.com' . "\r\n" .   
     'X-Mailer: PHP/' . phpversion();   
 mail($to, $subject, $message, $headers);

5. 验证激活代码 verify.php
如果验证码相同,则激活用户。

 $queryString = $_SERVER['QUERY_STRING']; 
 $query = "SELECT * FROM users"; 
 $result = mysql_query($query) or die(mysql_error()); 
 while($row = mysql_fetch_array($result)){  
     if ($queryString == $row["activationkey"]){ 
        echo "Congratulations!" . $row["username"] . " is now the proud new owner of a YOURWEBSITE.com account."; 
        $sql="UPDATE users SET activationkey = '', status='activated' WHERE (id = $row[id])";          
        if (!mysql_query($sql)) { 
           die('Error: ' . mysql_error()); 
        }           
         // 到这里,用户已经完全激活了账号,你可以将页面跳转到登陆后的界面了   
     } 
   } // end of while
PHP 相关文章推荐
提取HTML标签
Oct 09 PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
php cc攻击代码与防范方法
Oct 18 PHP
php设计模式之观察者模式的应用详解
May 21 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
分享3个php获取日历的函数
Sep 25 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
laravel手动创建数组分页的实现代码
Jun 07 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 PHP
PHP常用header头定义代码示例汇总
Aug 29 PHP
php 生成唯一id的几种解决方法
Mar 08 #PHP
PHP Directory 函数的详解
Mar 07 #PHP
PHP重定向的3种方式
Mar 07 #PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 #PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 #PHP
php设置编码格式的方法
Mar 05 #PHP
简单实现限定phpmyadmin访问ip的方法
Mar 05 #PHP
You might like
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
PHP编程函数安全篇
2013/01/08 PHP
写的htc的数据表格
2007/01/20 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
Python中join和split用法实例
2015/04/14 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
python实现远程控制电脑
2019/05/23 Python
澳大利亚百货公司:David Jones
2018/02/08 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
实习单位接收函
2014/01/11 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
加强作风建设心得体会
2014/10/22 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
出国留学自荐信模板
2015/03/06 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
业务员管理制度范本
2015/08/06 职场文书
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android