[セットトップ]【Day 51】PHPはユーザー登録後のメールボックス検証を実現し、アカウントをアクティブにする
, , , URL , 。 。
, PHP+Mysql 、 、 、 URL 。
業務プロセス1、ユーザーが登録情報を提出する.2、データベースに書き込み、アカウントの状態がアクティブになっていない.3、ユーザー名パスワードまたは他の識別文字を暗号化して識別コードをアクティブ化する(あなたもアクティブ化コードと呼ぶことができる).4、作成したアクティブ化識別コードの構成URLをユーザーが提出したメールボックスに送る.5、ユーザーはメールボックスにログインしてURLをクリックしてアクティブ化する.6、アクティブ化識別コードを検証し、正しい場合はアカウントをアクティブ化する.
Email , 、 、 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 ' ,0- ,1- ', `regtime` int(10) NOT NULL COMMENT ' ', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
, , 、 。
<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>
ユーザーの入力に必要なフロントエンド検証を行うには、フォーム検証機能について、当駅の文章:フォーム検証プラグインValidationの応用例を説明することをお勧めします.本文はフロントエンド検証コードを省略します.また、ページにはユーザーにパスワードの繰り返し入力を要求する入力ボックスがあり、一時的にサボってしまう必要があります.register.phpユーザは登録情報をregisterに送信する.phpで処理します.register.phpは、データの書き込みとメールの送信の2つの機能を完了する必要があります.まず必要な2つのファイル、connectを含む.phpとsmtp.class.php、この2つのファイルは外で提供されているダウンロードパッケージにあります.ダウンロードを歓迎します.
include_once("connect.php");//
include_once("smtp.class.php");//
次に、ユーザーがコミットした情報をフィルタリングし、ユーザー名が存在するかどうかを検証します(フロントエンドでも検証できます).
$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); //
$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 。 t_user 。
, , URL , :
if(mysql_insert_id()){
$smtpserver = ""; //SMTP , :smtp.163.com
$smtpserverport = 25; //SMTP , 25
$smtpusermail = ""; //SMTP , [email protected]
$smtpuser = ""; //SMTP [email protected]
$smtppass = ""; //SMTP
$smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); //
$emailtype = "HTML"; // , :text; :HTML
$smtpemailto = $email; // , Email
$smtpemailfrom = $smtpusermail; // , [email protected]
$emailsubject = " ";//
//
$emailbody = " ".$username.":<br/> 。<br/> 。<br/> <a href='http://www.helloweba.com/demo/register/active.php?verify=".$token."' target= '_blank'>http://www.helloweba.com/demo/register/active.php?verify=".$token."</a><br/> , , 24 。";
//
$rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype);
if($rs==1){
$msg = ' , !<br/> !';
}else{
$msg = $rs;
}
}
echo $msg;
: PHPMailer HTML , 。
active.php
, Email helloweba , , active.php 。
active.php , verify , 。 , , , status 1, , 。
include_once("connect.php");//
$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 = ' , .';
}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;
, token , 。