PHP邮件发送验证功能(示例)

发布时间:2019-08-05编辑:脚本学堂
分享一个php实现的邮件发送与验证功能代码,很详细的邮件验证代码,有需要的朋友参考下。

本节内容:
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 &lt;your email&gt;";
 
// Your message
$message="Your Comfirmation link rn";
$message.="Click on this link to activate your account rn";
$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() in E:wampwwwmailverificationsignup_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!
邮件验证系统就完成了。