Cet article présente principalement la fonction d'activation de l'enregistrement des utilisateurs et de la vérification du courrier électronique implémentée dans PHP, et analyse en détail les compétences opérationnelles liées à la base de données et au courrier électronique impliquées dans l'activation des utilisateurs via le courrier électronique PHP. Les amis dans le besoin peuvent se référer à l'exemple de cet article.
Décrit la fonction d'activation de l'enregistrement des utilisateurs et de l'e-mail de vérification implémentée en PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Ici sera combiné avec des exemples pour présenter comment utiliser PHP+Mysql pour compléter les fonctions d'enregistrement d'un compte, d'envoi d'e-mails d'activation, de vérification des comptes d'activation. et gérer l'expiration du lien URL.
Processus d'activation par e-mail d'inscription
1. Inscription de l'utilisateur
2. Insérez les données utilisateur, le compte n'est pas activé pour le moment.
3. Chiffrez le nom d'utilisateur, le mot de passe ou d'autres caractères d'identification pour former un code d'identification d'activation (vous pouvez également l'appeler code d'activation).
4. Envoyez le code d'identification d'activation construit dans une URL à l'adresse e-mail soumise par l'utilisateur.
5. L'utilisateur se connecte à l'e-mail et clique sur l'URL pour l'activer.
6. Vérifiez le code d'identification d'activation et activez le compte s'il est correct.
t_user.sql
Le champ Email dans le tableau des informations utilisateur est très important. Il peut être utilisé pour authentifier les utilisateurs, récupérer des mots de passe, et même modifier le site Web. Fang Lai peut être utilisé pour collecter des informations sur les utilisateurs pour le marketing par e-mail. Voici la structure de la table d'informations sur les utilisateurs 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;
<. 🎜>HTML
Ce qui suit est un formulaire d'inscription où les utilisateurs peuvent saisir les informations d'inscription, y compris le nom d'utilisateur, le mot de passe et l'adresse e-mail.<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 termine l'écriture des données et l'envoi des e-mails
Connectez-vous d'abord à la base de données et contient la classe d'envoi d'e-mails smtp.class.phpinclude_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);
if (mysql_insert_id()) {//写入成功,发邮件 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;网页:HTML $smtpemailto = $email; $smtpemailfrom = $smtpusermail; $emailsubject = "用户帐号激活"; $emailbody = "亲爱的" . $username . ":<br/>感谢您在我站注册了新帐号。<br/>请点击链接激活您的帐号。<br/><a href='http://www.jb51.net/demo/active.php?verify=" . $token . "' target='_blank'>http://www.jb51.net/demo/active.php?verify=" . $token . "</a><br/>如果以上链接无法点击,请将它复制到你的浏览器地址栏中进入访问,该链接24小时内有效。<br/>如果此次激活请求非你本人所发,请忽略本邮件。<br/><p style='text-align:right'>-------- 脚本之家http://www.jb51.net敬上</p>"; $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype); if ($rs == 1) { $msg = '恭喜您,注册成功!<br/>请登录到您的邮箱及时激活您的帐号!'; } else { $msg = $rs; } echo $msg; }
active.php
active.php. reçoit les informations de lien soumises, obtient la valeur du paramètre de vérification, qui est le code d'identification d'activation. Recherchez-le et comparez-le avec les informations utilisateur dans la table de données. S'il existe un ensemble de données correspondant, déterminez s'il a expiré. S'il est dans la période de validité, définissez le champ d'état dans la table utilisateur correspondante sur 1, ce qui signifie qu'il a expiré. a été activé. Ceci termine la fonction d’activation.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;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!