免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2508 | 回复: 1
打印 上一主题 下一主题

PHP邮件发送验证功能 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-02 09:46 |只看该作者 |倒序浏览
PHP邮件发送验证功能





第一步:建立数据库

把下面数据库复制粘贴在一个记事本,然后在PHPMyAdmin创建一个新的数据库并导入下面数据。
  1. – 表的结构 `registered_members`

  2. CREATE TABLE `registered_members` (
  3. `id` int(4) NOT NULL auto_increment,
  4. `name` varchar(65) NOT NULL default ”,
  5. `email` varchar(65) NOT NULL default ”,
  6. `password` varchar(65) NOT NULL default ”,
  7. `country` varchar(65) NOT NULL default ”,
  8. PRIMARY KEY  (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


  10. – 导出表中的数据 `registered_members`

  11. – ——————————————————–

  12. – 表的结构 `temp_members_db`


  13. CREATE TABLE `temp_members_db` (
  14. `confirm_code` varchar(65) NOT NULL default ”,
  15. `name` varchar(65) NOT NULL default ”,
  16. `email` varchar(65) NOT NULL default ”,
  17. `password` varchar(15) NOT NULL default ”,
  18. `country` varchar(65) NOT NULL default ”
  19. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
复制代码

– 导出表中的数据 `temp_members_db`


第二步:建立数据库连接

请把下面代码复制到你的文本编编译器里面,并命名:config.php
  1. <?php

  2. $host=”Hostname”; // Host name
  3. $username=”Username”; // Mysql username
  4. $password=”Password”; // Mysql password
  5. $db_name=”DB name”; // Database name

  6. //Connect to server and select database.
  7. mysql_connect(“$host”, “$username”, “$password”)or die(“cannot connect to server”);
  8. mysql_select_db(“$db_name”)or die(“cannot select DB”);

  9. ?>
复制代码
第三步:注册页面
请把下面代码复制到你的文本编辑器里面,并命名:signup.php
  1. <table border=”0″ cellspacing=”0″ cellpadding=”0″ width=”350″ align=”center”>
  2. <tbody>
  3. <tr>
  4. <td><form action=”signup_ac.php” method=”post”>
  5. <table border=”0″ cellspacing=”4″ cellpadding=”0″ width=”100%”>
  6. <tbody>
  7. <tr>
  8. <td colspan=”3″><strong>注册</strong></td>
  9. </tr>
  10. <tr>
  11. <td width=”76″>用户名</td>
  12. <td width=”3″>:</td>
  13. <td width=”305″><input id=”name” name=”name” size=”30″ type=”text” /></td>
  14. </tr>
  15. <tr>
  16. <td>邮箱</td>
  17. <td>:</td>
  18. <td><input id=”email” name=”email” size=”30″ type=”text” /></td>
  19. </tr>
  20. <tr>
  21. <td>密码</td>
  22. <td>:</td>
  23. <td><input id=”password” name=”password” size=”30″ type=”password” /></td>
  24. </tr>
  25. <tr>
  26. <td>国家</td>
  27. <td>:</td>
  28. <td><input id=”country” name=”country” size=”30″ type=”text” /></td>
  29. </tr>
  30. <tr>
  31. <td></td>
  32. <td></td>
  33. <td><input name=”Submit” type=”submit” value=”注册” />
  34. <input name=”Reset” type=”reset” value=”重设” /></td>
  35. </tr>
  36. </tbody>
  37. </table>
  38. </form></td>
  39. </tr>
  40. </tbody>
  41. </table>
复制代码
第四步:数据插入到数据和邮件发送

请把下面代码复制到你的文本编辑器里面,并命名:signup_ac.php
  1. <?php
  2. include(‘config.php’);

  3. // table name
  4. $tbl_name=temp_members_db;

  5. // Random confirmation code
  6. $confirm_code=md5(uniqid(rand()));

  7. // values sent from form
  8. $name=$_POST['name'];
  9. $email=$_POST['email'];
  10. $country=$_POST['country'];

  11. // Insert data into database
  12. $sql=”INSERT INTO $tbl_name(confirm_code, name, email, password, country)VALUES(‘$confirm_code’, ‘$name’, ‘$email’, ‘$password’, ‘$country’)”;
  13. $result=mysql_query($sql);

  14. // if suceesfully inserted data into database, send confirmation link to email
  15. if($result){

  16. // —————- SEND MAIL FORM —————-

  17. // send e-mail to …
  18. $to=$email;

  19. // Your subject
  20. $subject=”Your confirmation link here”;

  21. // From
  22. $header=”from: your name <your email>”;

  23. // Your message
  24. $message=”Your Comfirmation link \r\n”;
  25. $message.=”Click on this link to activate your account \r\n”;
  26. $message.=”http://www.yourweb.com/confirmation.php?passkey=$confirm_code”;

  27. // send email
  28. $sentmail = mail($to,$subject,$message,$header);

  29. }

  30. // if not found
  31. else {
  32. echo “Not found your email in our database”;
  33. }

  34. // if your email succesfully sent
  35. if($sentmail){
  36. echo “Your Confirmation link Has Been Sent To Your Email Address.”;
  37. }
  38. else {
  39. echo “Cannot send Confirmation link to your e-mail address”;
  40. }

  41. ?>
复制代码
第五步:验证

请把下面代码复制到你的文本编辑器里面,并命名:confirmation.php
  1. <?php
  2. include(‘config.php’);

  3. // Passkey that got from link
  4. $passkey=$_GET['passkey'];

  5. $tbl_name1=”temp_members_db”;

  6. // Retrieve data from table where row that match this passkey
  7. $sql1=”SELECT * FROM $tbl_name1 WHERE confirm_code =’$passkey’”;
  8. $result1=mysql_query($sql1);

  9. // If successfully queried
  10. if($result1){

  11. // Count how many row has this passkey
  12. $count=mysql_num_rows($result1);

  13. // if found this passkey in our database, retrieve data from table “temp_members_db”
  14. if($count==1){

  15. $rows=mysql_fetch_array($result1);
  16. $name=$rows['name'];
  17. $email=$rows['email'];
  18. $password=$rows['password'];
  19. $country=$rows['country'];

  20. $tbl_name2=”registered_members”;

  21. // Insert data that retrieves from “temp_members_db” into table “registered_members”
  22. $sql2=”INSERT INTO $tbl_name2(name, email, password, country)VALUES(‘$name’, ‘$email’, ‘$password’, ‘$country’)”;
  23. $result2=mysql_query($sql2);
  24. }

  25. // if not found passkey, display message “Wrong Confirmation code”
  26. else {
  27. echo “Wrong Confirmation code”;
  28. }

  29. // if successfully moved data from table”temp_members_db” to table “registered_members” displays message “Your account has been activated” and don’t forget to delete confirmation code from table “temp_members_db”
  30. if($result2){

  31. echo “Your account has been activated”;

  32. // Delete information of this user from table “temp_members_db” that has this passkey
  33. $sql3=”DELETE FROM $tbl_name1 WHERE confirm_code = ‘$passkey’”;
  34. $result3=mysql_query($sql3);

  35. }

  36. }
  37. ?>
复制代码
注意:

如果没有邮箱服务器的,会出现如下面提示之类的东西:
  1. Warning: mail() [function.mail]: Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() inE:\wamp\www\mailverification\signup_ac.php on line 39
  2. Cannot send Confirmation link to your e-mail address
复制代码
不用慌,这说明你的数据已经被写进数据库了。

你可以用以下方法去通过验证:

先复制这个URL到你的浏览器:http://www.你的网站.com/confirmation.php?passkey=

然后到你的数据库里面把confirm_code复制粘贴在passkey=后面,并回车,会出现提示的:Your account has been activated!

恭喜你了!你的邮件验证系统就完成了!如果有什么问题的,欢迎随时留言,回以最快的速度解决你的问题。由于时间关系,英文就不做翻译了。

原文出处:http://blog.jiexi-it.com/?p=72

论坛徽章:
0
2 [报告]
发表于 2011-11-02 22:45 |只看该作者
楼主 好强大
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP