- 论坛徽章:
- 0
|
PHP邮件发送验证功能
第一步:建立数据库
把下面数据库复制粘贴在一个记事本,然后在PHPMyAdmin创建一个新的数据库并导入下面数据。- – 表的结构 `registered_members`
- –
- CREATE TABLE `registered_members` (
- `id` int(4) NOT NULL auto_increment,
- `name` varchar(65) NOT NULL default ”,
- `email` varchar(65) NOT NULL default ”,
- `password` varchar(65) NOT NULL default ”,
- `country` varchar(65) NOT NULL default ”,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
- –
- – 导出表中的数据 `registered_members`
- –
- – ——————————————————–
- –
- – 表的结构 `temp_members_db`
- –
- CREATE TABLE `temp_members_db` (
- `confirm_code` varchar(65) NOT NULL default ”,
- `name` varchar(65) NOT NULL default ”,
- `email` varchar(65) NOT NULL default ”,
- `password` varchar(15) NOT NULL default ”,
- `country` varchar(65) NOT NULL default ”
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
复制代码 –
– 导出表中的数据 `temp_members_db`
–
第二步:建立数据库连接
请把下面代码复制到你的文本编编译器里面,并命名:config.php- <?php
- $host=”Hostname”; // Host name
- $username=”Username”; // Mysql username
- $password=”Password”; // Mysql password
- $db_name=”DB name”; // Database name
- //Connect to server and select database.
- mysql_connect(“$host”, “$username”, “$password”)or die(“cannot connect to server”);
- mysql_select_db(“$db_name”)or die(“cannot select DB”);
- ?>
复制代码 第三步:注册页面
请把下面代码复制到你的文本编辑器里面,并命名:signup.php- <table border=”0″ cellspacing=”0″ cellpadding=”0″ width=”350″ align=”center”>
- <tbody>
- <tr>
- <td><form action=”signup_ac.php” method=”post”>
- <table border=”0″ cellspacing=”4″ cellpadding=”0″ width=”100%”>
- <tbody>
- <tr>
- <td colspan=”3″><strong>注册</strong></td>
- </tr>
- <tr>
- <td width=”76″>用户名</td>
- <td width=”3″>:</td>
- <td width=”305″><input id=”name” name=”name” size=”30″ type=”text” /></td>
- </tr>
- <tr>
- <td>邮箱</td>
- <td>:</td>
- <td><input id=”email” name=”email” size=”30″ type=”text” /></td>
- </tr>
- <tr>
- <td>密码</td>
- <td>:</td>
- <td><input id=”password” name=”password” size=”30″ type=”password” /></td>
- </tr>
- <tr>
- <td>国家</td>
- <td>:</td>
- <td><input id=”country” name=”country” size=”30″ type=”text” /></td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td><input name=”Submit” type=”submit” value=”注册” />
- <input name=”Reset” type=”reset” value=”重设” /></td>
- </tr>
- </tbody>
- </table>
- </form></td>
- </tr>
- </tbody>
- </table>
复制代码 第四步:数据插入到数据和邮件发送
请把下面代码复制到你的文本编辑器里面,并命名:signup_ac.php- <?php
- include(‘config.php’);
- // table name
- $tbl_name=temp_members_db;
- // Random confirmation code
- $confirm_code=md5(uniqid(rand()));
- // values sent from form
- $name=$_POST['name'];
- $email=$_POST['email'];
- $country=$_POST['country'];
- // Insert data into database
- $sql=”INSERT INTO $tbl_name(confirm_code, name, email, password, country)VALUES(‘$confirm_code’, ‘$name’, ‘$email’, ‘$password’, ‘$country’)”;
- $result=mysql_query($sql);
- // if suceesfully inserted data into database, send confirmation link to email
- if($result){
- // —————- SEND MAIL FORM —————-
- // send e-mail to …
- $to=$email;
- // Your subject
- $subject=”Your confirmation link here”;
- // From
- $header=”from: your name <your email>”;
- // Your message
- $message=”Your Comfirmation link \r\n”;
- $message.=”Click on this link to activate your account \r\n”;
- $message.=”http://www.yourweb.com/confirmation.php?passkey=$confirm_code”;
- // send email
- $sentmail = mail($to,$subject,$message,$header);
- }
- // if not found
- else {
- echo “Not found your email in our database”;
- }
- // if your email succesfully sent
- if($sentmail){
- echo “Your Confirmation link Has Been Sent To Your Email Address.”;
- }
- else {
- echo “Cannot send Confirmation link to your e-mail address”;
- }
- ?>
复制代码 第五步:验证
请把下面代码复制到你的文本编辑器里面,并命名:confirmation.php- <?php
- include(‘config.php’);
- // Passkey that got from link
- $passkey=$_GET['passkey'];
- $tbl_name1=”temp_members_db”;
- // Retrieve data from table where row that match this passkey
- $sql1=”SELECT * FROM $tbl_name1 WHERE confirm_code =’$passkey’”;
- $result1=mysql_query($sql1);
- // If successfully queried
- if($result1){
- // Count how many row has this passkey
- $count=mysql_num_rows($result1);
- // if found this passkey in our database, retrieve data from table “temp_members_db”
- if($count==1){
- $rows=mysql_fetch_array($result1);
- $name=$rows['name'];
- $email=$rows['email'];
- $password=$rows['password'];
- $country=$rows['country'];
- $tbl_name2=”registered_members”;
- // Insert data that retrieves from “temp_members_db” into table “registered_members”
- $sql2=”INSERT INTO $tbl_name2(name, email, password, country)VALUES(‘$name’, ‘$email’, ‘$password’, ‘$country’)”;
- $result2=mysql_query($sql2);
- }
- // if not found passkey, display message “Wrong Confirmation code”
- else {
- echo “Wrong Confirmation code”;
- }
- // 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”
- if($result2){
- echo “Your account has been activated”;
- // Delete information of this user from table “temp_members_db” that has this passkey
- $sql3=”DELETE FROM $tbl_name1 WHERE confirm_code = ‘$passkey’”;
- $result3=mysql_query($sql3);
- }
- }
- ?>
复制代码 注意:
如果没有邮箱服务器的,会出现如下面提示之类的东西:- 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
- 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 |
|