用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 相关文章推荐
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php类的定义与继承用法实例
Jul 07 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP实现的日历功能示例
Sep 01 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
php弹出提示框的是实例写法
Sep 26 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 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
php实现两个数组相加的方法
2015/02/17 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
javascript基础知识讲解
2017/01/11 Javascript
Angular2库初探
2017/03/01 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python Tkinter基础控件用法
2014/09/03 Python
Python Flask基础教程示例代码
2018/02/07 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
给护士表扬信
2014/01/19 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
文明旅游倡议书
2015/04/28 职场文书
确保工程质量承诺书
2015/04/29 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL