国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP實現(xiàn)的激活用戶注冊驗證郵箱功能示例

2024-05-04 23:57:47
字體:
來源:轉載
供稿:網(wǎng)友

本文實例講述了PHP實現(xiàn)的激活用戶注冊驗證郵箱功能。分享給大家供大家參考,具體如下:

這里將結合實例介紹如何使用PHP+Mysql完成注冊帳號、發(fā)送激活郵件、驗證激活帳號、處理URL鏈接過期的功能。

注冊郵箱激活流程

1、用戶注冊
2、插入用戶數(shù)據(jù),此時帳號未激活狀態(tài)。
3、將用戶名密碼或其他標識字符加密構造成激活識別碼(你也可以叫激活碼)。
4、將構造好的激活識別碼組成URL發(fā)送到用戶提交的郵箱。
5、用戶登錄郵箱并點擊URL,進行激活。
6、驗證激活識別碼,如果正確則激活帳號。

t_user.sql

用戶信息表中字段Email很重要,它可以用來驗證用戶、找回密碼、甚至對網(wǎng)站方來說可以用來收集用戶信息進行Email營銷,以下是用戶信息表t_user的表結構:

CREATE TABLE IF NOT EXISTS `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(30) NOT NULL COMMENT '用戶名', `password` varchar(32) NOT NULL COMMENT '密碼', `email` varchar(30) NOT NULL COMMENT '郵箱', `token` varchar(50) NOT NULL COMMENT '帳號激活碼', `token_exptime` int(10) NOT NULL COMMENT '激活碼有效期', `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '狀態(tài),0-未激活,1-已激活', `regtime` int(10) NOT NULL COMMENT '注冊時間', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

HTML

以下是一個注冊表單,用戶可以輸入注冊信息,包括用戶名、密碼和郵箱。

<form id="reg" action="register.php" 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>

register.php完成寫入數(shù)據(jù)和發(fā)送郵件

首先連接數(shù)據(jù)庫 和包含郵件發(fā)送類 smtp.class.php

include_once("connect.php");//連接數(shù)據(jù)庫include_once("smtp.class.php");//郵件發(fā)送類

前端驗證表單我們省略了,直接看程序

$username = stripslashes(trim($_POST['username']));$query = mysql_query("select id from t_user where username='$username'");$num = mysql_num_rows($query);if($num==1){  echo '用戶名已存在,請換個其他的用戶名';  exit;}

接著我們將用戶密碼加密,構造激活識別碼:

$password = md5(trim($_POST['password'])); //加密密碼$email = trim($_POST['email']); //郵箱$regtime = time();$token = md5($username.$password.$regtime); //創(chuàng)建用于激活識別碼$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')";mysql_query($sql);

上述代碼中,$token即構造好的激活識別碼,它是由用戶名、密碼和當前時間組成并md5加密得來的。$token_exptime用于設置激活鏈接URL的過期時間,用戶在這個時間段內可以激活帳號,本例設置的是24小時內激活有效。最后將這些字段插入到數(shù)據(jù)表t_user中。

當數(shù)據(jù)插入成功后,調用郵件發(fā)送類將激活信息發(fā)送給用戶注冊的郵箱,注意將構造好的激活識別碼組成一個完整的URL作為用戶點擊時的激活鏈接,以下是詳細代碼:

if (mysql_insert_id()) {//寫入成功,發(fā)郵件  include_once("smtp.class.php");  $smtpserver = "smtp.163.com"; //SMTP服務器  $smtpserverport = 25; //SMTP服務器端口  $smtpusermail = "hjl416148489_4@163.com"; //SMTP服務器的用戶郵箱  $smtpuser = "hjl416148489_4@163.com"; //SMTP服務器的用戶帳號  $smtppass = "hjl7233163"; //SMTP服務器的用戶密碼  $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); //這里面的一個true是表示使用身份驗證,否則不使用身份驗證.  $emailtype = "HTML"; //信件類型,文本:text;網(wǎng)頁:HTML  $smtpemailto = $email;  $smtpemailfrom = $smtpusermail;  $emailsubject = "用戶帳號激活";  $emailbody = "親愛的" . $username . ":<br/>感謝您在我站注冊了新帳號。<br/>請點擊鏈接激活您的帳號。<br/><a href='http://m.survivalescaperooms.com/demo/active.php?verify=" . $token . "' target='_blank'>http://m.survivalescaperooms.com/demo/active.php?verify=" . $token . "</a><br/>如果以上鏈接無法點擊,請將它復制到你的瀏覽器地址欄中進入訪問,該鏈接24小時內有效。<br/>如果此次激活請求非你本人所發(fā),請忽略本郵件。<br/><p style='text-align:right'>-------- VeVb武林網(wǎng)http://m.survivalescaperooms.com敬上</p>";  $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype);  if ($rs == 1) {    $msg = '恭喜您,注冊成功!<br/>請登錄到您的郵箱及時激活您的帳號!';  } else {    $msg = $rs;  }  echo $msg;}

active.php

active.php接收提交的鏈接信息,獲取參數(shù)verify的值,即激活識別碼。將它與數(shù)據(jù)表中的用戶信息進行查詢對比,如果有相應的數(shù)據(jù)集,判斷是否過期,如果在有效期內則將對應的用戶表中字段status設置1,即已激活,這樣就完成了激活功能。

include_once("connect.php");//連接數(shù)據(jù)庫$verify = stripslashes(trim($_GET['verify']));$nowtime = time();$query = mysql_query("select id,token_exptime from t_user where status='0' and`token`='$verify'");$row = mysql_fetch_array($query);if($row){  if($nowtime>$row['token_exptime']){ //24hour    $msg = '您的激活有效期已過,請登錄您的帳號重新發(fā)送激活郵件.';  }else{    mysql_query("update t_user set status=1 where id=".$row['id']);    if(mysql_affected_rows($link)!=1) die(0);    $msg = '激活成功!';  }}else{  $msg = 'error.';}echo $msg;

激活成功后,發(fā)現(xiàn)token字段并沒有用處了,您可以清空。并且status激活狀態(tài)變?yōu)?了。

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 丹巴县| 静宁县| 绍兴县| 庆云县| 七台河市| 雷山县| 广元市| 深圳市| 昂仁县| 屏山县| 南澳县| 名山县| 观塘区| 登封市| 富民县| 东丽区| 衡山县| 云林县| 神木县| 博乐市| 开封市| 淮南市| 榆中县| 东方市| 万山特区| 白玉县| 澄江县| 富民县| 句容市| 油尖旺区| 什邡市| 襄汾县| 宜阳县| 礼泉县| 安溪县| 黄冈市| 台东市| 湟中县| 白沙| 岳阳县| 龙海市|