Maison > Article > développement back-end > PHP implémente la vérification des e-mails
Comment implémenter la vérification des e-mails en PHP : téléchargez d'abord phpMailer ; puis décompressez-le dans le répertoire racine du projet ; puis vous avez besoin d'un serveur de messagerie, enfin, configurez les informations relatives aux e-mails dans "config.php" et créez un fichier ; pour l'envoi La méthode publique de courrier fera l'affaire.
Recommandé : "Tutoriel vidéo PHP"
1 Introduction
Exigences. Les utilisateurs remplissent leur e-mail lors de leur inscription. Après l'inscription, ils doivent vérifier leur e-mail avant de se connecter.
2. Mettre en œuvre le processus de vérification
Après une inscription réussie, un code de vérification est généré pour l'utilisateur ; le code de vérification est envoyé à la boîte aux lettres de l'utilisateur via une connexion ; pour renvoyer le code de vérification au site Web ; Le site Web vérifie si le code de vérification est généré pour cet utilisateur ; le compte doit être vérifié dans les 24 heures, sinon le compte deviendra invalide.
1. Préparation
Vous devez ajouter la classe phpMailer pour envoyer des emails. Téléchargez phpMailer et extrayez-le dans le répertoire racine du projet.
Pour envoyer des emails, utilisez le protocole SMTP et le numéro de port est 25 ; pour recevoir des emails, utilisez le protocole POP3 et le numéro de port est 110. Un serveur de messagerie est également requis. Vous pouvez le créer vous-même ou en utiliser un tiers. L'utilisation d'un serveur de messagerie tiers nécessite l'enregistrement d'un compte auprès du tiers. Connectez-vous et activez le protocole SMTP.
Configurez les informations relatives au courrier électronique dans config.php.
'EMAIL' => array( 'host' => 'smtp.163.com', 'user' => 'youxiangzhanghao', 'password' => 'password', //此处的密码为user邮箱在开启smtp时设置的授权密码。 ),
2. Créez une méthode publique pour l'envoi d'e-mails
/** * 发送邮件的方法 */ functionsendMail($to, $title, $content) { require_once('./PHPMailer-5.2.14/class.smtp.php'); require_once('./PHPMailer-5.2.14/class.phpmailer.php'); $mail = new PHPMailer(); //设置为发送邮件 $mail->IsSMTP(); //是否允许发送html代码为邮件内容 $mail->IsHTML(true); $mail->CharSet = 'utf-8'; //是否需要身份验证 $mail->SMTPAuth = true; //邮件服务器的帐号信息 $mailConfig = C('EMAIL'); $mail->From =$mailConfig['user'].'@163.com'; $mail->FromName =$mailConfig['user']; $mail->Host = $mailConfig['host']; $mail->Username = $mailConfig['user']; $mail->Password =$mailConfig['password']; //发邮件的端口号 $mail->Port = 25; //收件人 $mail->AddAddress($to); //邮件标题 $mail->Subject = $title; //邮件内容 $mail->Body = $content; return($mail->send()); }
Testez la méthode de la page d'accueil du contrôleur
//测试发送邮件 var_dump(sendMail('haha@163.com','phptestemail', '<a href="http://www.phptest.com">hahahah</a>'));
3.
email varchar(150) not null comment '邮箱', email_chkcode char(32) not null default '' comment '邮箱验证码', email_chkcode_time int unsigned not null comment '邮箱验证码生成时间', key email_chkcode(email_chkcode)
4. Modifier l'inscription, l'e-mail doit être renseigné
Modifier le formulaire d'inscription, ajouter un champ d'e-mail ; modifier le modèle de membre, autoriser l'insertion du champ d'e-mail et ajouter un champ d'e-mail comme règle de vérification pour l'e-mail. .
5. Générez un code de vérification par e-mail avant l'inscription
Dans la méthode _before_insert()
//生成email验证码 $data['email_chkcode']= md5(uniqid()); $data['email_chkcode_time']= time();
6 Après l'inscription, envoyez le code de vérification à l'adresse e-mail de l'utilisateur
/** * 注册后的钩子函数 */ protected function _after_insert($data,$option) { $content = "欢迎注册,请点击以下完成验证:<p><a href='http://www.php2.com/eshop/index.php/Home/Member/email_chk/code/{$data['email_chkcode']}'>请点击</a></p>"; sendMail($data['email'],'php2网站邮箱验证', $content); }7. Ajoutez une méthode dans le contrôleur de membre pour terminer la vérification
/** * 完成邮箱验证方法 */ public function email_chk() { //接收验证码 $code = I('get.code'); //查询这个验证码是否有效 $member = D('Admin/Member'); $info = $member->field('id,email_chkcode_time')->where(array( 'email_chkcode' => $code, ))->find(); if($info) { if((time() -$info['email_chkcode_time']) > 86400) { //帐号过期,删除这个帐号 $member->delete($info['id']); $this->error('验证码已过期,帐号已经删除,请重新注册', U('regist')); exit; } else { //验证通过,将验证码清空 $member->where(array( 'id' => $info['id'], ))->setFielf('email_chkcode', ''); $this->success('验证通过,请登陆', U('login')); exit; } } else { $this->error('参数错误', U('/')); exit; } }8. Modifiez la méthode de connexion dans le modèle de membre
//判断这个帐号是否通过验证码验证 if(!empty($user['email_chkcode'])) { $this->error= '必须验证后才可以登陆'; returnfalse; }9. Modifiez le code d'enregistrement Si un compte existe déjà, mais il a expiré et n'a pas été vérifié Vous pouvez supprimer ce compte. Ajoutez une vérification du formulaire lors de l'inscription, ainsi qu'une vérification de l'unicité et du code de vérification de l'inscription pour le nom d'utilisateur et l'adresse e-mail. array('email','chk_un_email', 'email existe déjà !', 1,'callback', 3), array('username','chk_un_user', 'User Le nom existe déjà !', 1,'callback', 3),
//验证已经存在的邮箱是否通过验证 public function chk_un_email() { $email = I('post.email'); $username =I('post.username'); $hasEmail =$this->field('id,email_chkcode,email_chkcode_time')->where(array( 'email' =>$email, ))->find(); if($hasEmail) { if(empty($hasEmail['email_chkcode'])) { returnfalse; } else { if(time() -$hasEmail['email_chkcode_time'] > 86400) { $this->delete($hasEmail['id']); returntrue; } else { returnfalse; } } } else { return true; } } //验证已经存在的用户名是否通过验证 public function chk_un_user() { $username =I('post.username'); $hasUsername =$this->field('id,email_chkcode,email_chkcode_time')->where(array( 'username' =>$username, ))->find(); if($hasUsername) { if(empty($hasUsername['email_chkcode'])) { returnfalse; } else { if(time() -$hasUsername['email_chkcode_time'] > 86400) { $this->delete($hasUsername['id']); returntrue; } else { returnfalse; } } } else { return true; } }Test
.
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!