


(Avancé) PHP implémente la vérification des e-mails et l'activation du compte après l'enregistrement de l'utilisateur
Lorsque nous enregistrons des membres sur de nombreux sites Web, une fois l'inscription terminée, le système enverra automatiquement un e-mail à la boîte aux lettres de l'utilisateur. Le contenu de cet e-mail est un lien URL. L'utilisateur doit cliquer et ouvrir ce lien pour l'activer. l'inscription sur le compte du site. Les fonctions d’adhésion ne peuvent être utilisées normalement qu’une fois l’activation réussie.
Cet article utilisera des exemples pour expliquer 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 de gestion de l'expiration des liens URL.
Processus commercial
1. L'utilisateur soumet les informations d'inscription.
2. Écrivez dans la base de données Le statut du 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.
Préparer le tableau de données
Le champ E-mail dans le tableau d'informations utilisateur est très important. Il peut être utilisé pour vérifier les utilisateurs, récupérer des mots de passe et même pour les sites Web, il peut être utilisé pour collecter. informations utilisateur pour le marketing par e-mail. , voici la structure du tableau d'informations utilisateur 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
Placez un formulaire d'inscription sur la page et l'utilisateur peut saisir l'inscription. informations, y compris le nom d'utilisateur, le mot de passe et l'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>
Une vérification frontale nécessaire est requise pour la saisie de l'utilisateur Concernant la fonction de vérification de formulaire, il est recommandé de se référer à l'article de ce site : Exemples expliquant l'application du plug-in de vérification de formulaire. Validation. Cet article ignore le code de vérification frontale. De plus, il devrait y avoir une zone de saisie sur la page qui demande à l'utilisateur de ressaisir le mot de passe. Si vous êtes paresseux, vous pouvez l'ignorer.
register.php
Les utilisateurs soumettent les informations d'inscription à register.php pour traitement. register.php doit remplir deux fonctions principales : écrire des données et envoyer des e-mails.
Tout d'abord, il contient les deux fichiers nécessaires, connect.php et smtp.class.php. Ces deux fichiers sont inclus dans le package de téléchargement fourni à l'extérieur.
include_once("connect.php");//连接数据库 include_once("smtp.class.php");//邮件发送类
Ensuite, nous devons filtrer les informations soumises par l'utilisateur et vérifier si le nom d'utilisateur existe (le front-end peut également vérifier).
$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; }
Ensuite, nous chiffrons le mot de passe de l'utilisateur et construisons le code d'identification d'activation :
$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);
Dans le code ci-dessus, $token est le code d'identification d'activation construit, qui est composé du nom d'utilisateur, Le mot de passe est composé de l'heure actuelle et crypté avec md5. $token_exptime est utilisé pour définir le délai d'expiration de l'URL du lien d'activation. L'utilisateur peut activer le compte dans ce délai. Dans cet exemple, l'activation est valide dans les 24 heures. Enfin, ces champs sont insérés dans la table de données t_user.
Lorsque les données sont insérées avec succès, appelez la classe d'envoi d'e-mails pour envoyer les informations d'activation à la boîte aux lettres enregistrée de l'utilisateur. Faites attention à former le code d'identification d'activation construit en une URL complète comme lien d'activation lorsque l'utilisateur clique. . Voici les détails du code :
if(mysql_insert_id()){ $smtpserver = ""; //SMTP服务器,如:smtp.163.com $smtpserverport = 25; //SMTP服务器端口,一般为25 $smtpusermail = ""; //SMTP服务器的用户邮箱,如xxx@163.com $smtpuser = ""; //SMTP服务器的用户帐号xxx@163.com $smtppass = ""; //SMTP服务器的用户密码 $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); //实例化邮件类 $emailtype = "HTML"; //信件类型,文本:text;网页:HTML $smtpemailto = $email; //接收邮件方,本例为注册用户的Email $smtpemailfrom = $smtpusermail; //发送邮件方,如xxx@163.com $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;
Il existe également une classe d'envoi d'e-mails très simple à utiliser et puissante à partager avec tout le monde : utilisez PHPMailer pour envoyer des e-mails avec des pièces jointes et prendre en charge le contenu HTML. peut l'utiliser directement.
active.php
Si tout va bien, l'email que vous avez renseigné lors de l'enregistrement de votre compte recevra un email de helloweba. A ce moment, vous pouvez directement cliquer sur le lien d'activation et le remettre. passez à la gestion 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字段并没有用处了,您可以清空。接下来我们会讲解用户找回密码的功能,也要用到邮箱验证,敬请关注。
以上就是(进阶篇)PHP实现用户注册后邮箱验证,激活帐号的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

Le site officiel de Deepseek lance désormais plusieurs activités de réduction pour offrir aux utilisateurs une expérience d'achat. Les nouveaux utilisateurs s'inscrivent pour obtenir un coupon de 10 $ et profitez d'une remise à temps limitée de 15% pour l'ensemble de l'audience. Recommander des amis peut également gagner des récompenses, et vous pouvez accumuler des points pour le rachat de cadeaux lors du shopping. Les délais d'événements sont différents.

En PHP, vous pouvez prévenir efficacement les attaques du CSRF en utilisant des jetons imprévisibles. Les méthodes spécifiques comprennent: 1. Générer et intégrer les jetons CSRF dans la forme; 2. Vérifiez la validité du jeton lors du traitement de la demande.

Dans PHP8, les expressions de correspondance sont une nouvelle structure de contrôle qui renvoie différents résultats en fonction de la valeur de l'expression. 1) Il est similaire à une instruction Switch, mais renvoie une valeur au lieu d'un bloc d'instruction d'exécution. 2) L'expression de correspondance est strictement comparée (===), ce qui améliore la sécurité. 3) Il évite les éventuelles omissions de rupture dans les instructions de commutation et améliore la simplicité et la lisibilité du code.
