PHP郵件發送驗證
由於項目中需要做一個郵箱驗證。一直在網上找各種資料,出現各種發送不了郵箱。最後在我堅持下終於可以在使用qq發送驗證郵箱了。想了解更多相關信息,請持續關注我們應屆畢業生考試網!
1,先去qq郵箱中的 點擊設置-》點擊帳户-》將smtp的權限開啟
如果是設置POP3和SMTP的加密方式,則端口如下:
POP3服務器(端口995)
SMTP服務器(端口465或587)。
2,查看你的Openssl和Socketsd是否支持:PHP -m查看
這裏寫圖片描述
利用OpenSSL庫對Socket傳輸進行安全加密。
3,表單部分
<form id="reg" action="" method="post">
<p>用户名:<input type="text" class="input" name="username" id="user"></p>
<p>密 碼:<input type="password" class="input" name="password" id="pass"></p>
<p>E-mail:<input type="text" class="input" name="email" id="email"></p>
<p><input type="submit" class="btn" value="提交註冊"></p>
</form>
4,表單提交部分
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>PHP用户註冊郵箱驗證激活帳號</title>
<style type="text/css">
{margin: 20px auto; width: 400px; border: 1px solid #ccc; line-height: 50px;text-align: center;}
t {width: 150px; height: 25px; border: 1px solid #ccc;}
{padding: 5px 15px; font-size: 16px; font-family: '微軟雅黑'; background:#ff0066; color: #fff; border: none;}
</style>
<script type="text/javascript">
function chk_form(){
var user = lementById("user");
if(e==""){
alert("用户名不能為空!");
return false;
//s();
}
var pass = lementById("pass");
if(e==""){
alert("密碼不能為空!");
return false;
//s();
}
var email = lementById("email");
if(e==""){
alert("Email不能為空!");
return false;
//s();
}
var preg = /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/; //匹配Email
if(!(e)){
alert("Email格式錯誤!");
return false;
//s();
}
}
</script>
</head>
<body>
<p id="main">
<p class="demo">
<form id="reg" action="" method="post" onsubmit="return chk_form();">
用户名:<input type="text" class="input" name="username" id="user"><br>
密 碼:<input type="password" class="input" name="password" id="pass"><br>
郵 箱:<input type="text" class="input" name="email" id="email"><br>
<input type="submit" class="btn" value="提交註冊">
</form>
</p>
</p>
</body>
</html>
5,如果註冊成功,發送郵箱驗證碼,這裏負責發送。
部分
<?php
include_once("");//連接數據庫
// include_once("");//郵件發送類
$username = stripslashes(trim($_POST['username']));
$sql ="select id from t_user where username='{$username}'";
// $query = mysqli_query("'");
$res = mysqli_query($link, $sql);
if($res && mysqli_num_rows($res)>0){
echo '用户名已存在,請換個其他的用户名';
exit;
}
//構造激活碼
$password = md5(trim($_POST['password'])); //加密密碼
$email = trim($_POST['email']); //郵箱
$regtime = time();
$token = md5($username.$password.$regtime); //創建用於激活識別碼
$token_exptime = time()+60*60*24;//過期時間為24小時後
$sql = "insert into `t_user` (`username`,`password`,`email`,`token`,`token_exptime`,`regtime`)
values ('$username','$password','$email','$token','$token_exptime','$regtime')";
// echo $sql;
$res1 = mysqli_query($link, $sql);
if(mysqli_insert_id($link)){
//郵件發送
require '';
require '';
$mail = new PHPMailer;
//$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = ''; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '; // SMTP username
$mail->Password = 'dzrxckopdnxuhjhf'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
$mail->setFrom(', '發件人');
$email = $_POST['email'];
$mail->addAddress($email, '.'); // Add a recipient
// Name is optional
$mail->addReplyTo($email, 'php');
//$mail->addCC(');
//$mail->addBCC(');
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = '標題';
$mail->Body = "發送的內容";
// $mail->AltBody = '發送的內容22';
if(!$mail->send()) {
//輸出錯誤信息
echo 'Mailer Error: ' . $mail->ErrorInfo;
return false;
} else {
echo 'Message has been sent'; //成功輸出
return true;
}
}
?>
6 ,驗證部分
include_once("");//連接數據庫
$verify = stripslashes(trim($_GET['verify']));
$nowtime = time();
$sql = "select id,token_exptime from t_user where status='0' and `token`='$verify'";
$res= mysql_query($link, $sql);
$row = mysql_fetch_array($res);
if($row){
if($nowtime>$row['token_exptime']){ //24hour
$msg = '您的激活有效期已過,請登錄您的帳號重新發送激活郵件.';
}else{
$sql1 ="update t_user set status=1 where id=".$row['id']";
$res1 = mysqli_query($link, $sql1);
if(mysqli_affected_rows($link)!=1) die(0);
$msg = '激活成功!';
}
}else{
$msg = 'error.';
}
echo $msg;
-
PHP將XML轉為數組的方法
本文詳細介紹了,在php編程中,將XML數據轉換為數組的詳細過程,剖析了xml轉為php數組的具體方法,感興趣的朋友可以參考學習下。PHPXML轉數組首先,得到一個xml型的對象:複製代碼代碼示例:$resp=$this->c->execute($req,$sessionKey);//獲得xml對象$items=$resp->items;...
-
用PHP實現文件上傳二法
PHP(HypertextPreprocessor)是一種HTML內嵌式的語言(類似IIS上的ASP)。而PHP獨特的語法混合了C、Java、Perl以及PHP式的新語法。它可以比CGI或者Perl更快速的執行動態網頁。除此之外,用PHP寫出來的Web後端CGI程序,可以很輕易的移植到不同的系統平台上。我們在做...
-
PHP如何使用curl發送GET和POST請求
導語:PHP如何使用curl發送GET和POST請求,具體詳情請閲讀下面代碼,更多詳情請關注應屆畢業生考試網。使用CURL發送請求的基本流程使用CURL的PHP擴展完成一個HTTP請求的發送一般有以下幾個步驟:1.初始化連接句柄;2.設置CURL選項;3.執行並獲取結果;4.釋放VURL連接句柄。...
-
PHP常用開發技巧
PHP開發常用技巧能使你在開發過程中快而有效.以下就是小編精心推薦PHP常用開發技巧,希望對大家有幫助!1使用dowhile避免多層if語句嵌套我們直接舉例説明:實現方式①if($name=='hedong'){if($sex=='male'){if($major=='PHP'){$ret='...