Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert eine Bestätigungs-E-Mail, um die Anmeldefunktion für neue Benutzer nach der Registrierung zu aktivieren

PHP implementiert eine Bestätigungs-E-Mail, um die Anmeldefunktion für neue Benutzer nach der Registrierung zu aktivieren

巴扎黑
巴扎黑Original
2017-08-09 15:02:232328Durchsuche

In diesem Artikel wird hauptsächlich die in PHP implementierte Funktion zur Aktivierung der Benutzerregistrierungs- und Bestätigungs-E-Mail vorgestellt und die Datenbank- und E-Mail-bezogenen Betriebsfähigkeiten detailliert analysiert, die bei der Aktivierung von Benutzern über PHP-E-Mail erforderlich sind. Freunde in Not können sich auf das Beispiel dieses Artikels beziehen

Beschreibt die in PHP implementierte Funktion zur Aktivierung der Benutzerregistrierungs- und Bestätigungs-E-Mail. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Hier wird mit Beispielen kombiniert, um vorzustellen, wie man PHP+Mysql verwendet, um die Funktionen der Registrierung eines Kontos, des Sendens von Aktivierungs-E-Mails und der Überprüfung von Aktivierungskonten abzuschließen und Umgang mit dem Ablauf des URL-Links.

Registrierungs-E-Mail-Aktivierungsprozess

1. Benutzerregistrierung
2.
3. Verschlüsseln Sie den Benutzernamen, das Passwort oder andere identifizierende Zeichen, um einen Aktivierungsidentifikationscode zu bilden (Sie können ihn auch als Aktivierungscode bezeichnen).
4. Senden Sie den erstellten Aktivierungsidentifikationscode in eine URL an die vom Benutzer angegebene E-Mail-Adresse.
5. Der Benutzer meldet sich bei der E-Mail an und klickt zur Aktivierung auf die URL.
6. Überprüfen Sie den Aktivierungs-Identifikationscode und aktivieren Sie das Konto, falls korrekt.

t_user.sql

Das Feld E-Mail in der Benutzerinformationstabelle ist sehr wichtig, um Benutzer zu authentifizieren, Passwörter abzurufen, und sogar die Website Fang Lai kann zum Sammeln von Benutzerinformationen für E-Mail-Marketing verwendet werden. Das Folgende ist die Tabellenstruktur der Benutzerinformationstabelle 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

Das Folgende ist ein Registrierungsformular, in das Benutzer Registrierungsinformationen eingeben können, einschließlich Benutzername, Passwort und 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 schließt das Schreiben von Daten und das Versenden von E-Mails ab

Stellen Sie zunächst eine Verbindung zur Datenbank her und Enthält die E-Mail-Versandklasse smtp.class.php


include_once("connect.php");//连接数据库
include_once("smtp.class.php");//邮件发送类

Wir haben das Front-End-Verifizierungsformular weggelassen und schauen uns direkt das Programm an


$username = stripslashes(trim($_POST[&#39;username&#39;]));
$query = mysql_query("select id from t_user where username=&#39;$username&#39;");
$num = mysql_num_rows($query);
if($num==1){
  echo &#39;用户名已存在,请换个其他的用户名&#39;;
  exit;
}

Dann verschlüsseln wir das Benutzerpasswort und erstellen den Aktivierungsidentifikationscode:


$password = md5(trim($_POST[&#39;password&#39;])); //加密密码
$email = trim($_POST[&#39;email&#39;]); //邮箱
$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 (&#39;$username&#39;,&#39;$password&#39;,&#39;$email&#39;,&#39;$token&#39;,&#39;$token_exptime&#39;,&#39;$regtime&#39;)";
mysql_query($sql);

Im obigen Code $token ist der konstruierte Aktivierungsidentifikationscode, der aus Benutzername, Passwort und aktueller Uhrzeit besteht und von MD5 verschlüsselt wird. Mit $token_exptime wird die Ablaufzeit der Aktivierungslink-URL festgelegt. Der Benutzer kann das Konto innerhalb dieses Zeitraums aktivieren. In diesem Beispiel ist die Aktivierung innerhalb von 24 Stunden gültig. Abschließend werden diese Felder in die Datentabelle t_user eingefügt.

Wenn die Daten erfolgreich eingefügt wurden, rufen Sie die E-Mail-Sendeklasse auf, um die Aktivierungsinformationen an das registrierte Postfach des Benutzers zu senden. Achten Sie darauf, den erstellten Aktivierungsidentifikationscode in eine vollständige URL als Aktivierungslink umzuwandeln, wenn der Benutzer darauf klickt . Das Folgende ist der Detailcode:


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=&#39;http://www.jb51.net/demo/active.php?verify=" . $token . "&#39; target=&#39;_blank&#39;>http://www.jb51.net/demo/active.php?verify=" . $token . "</a><br/>如果以上链接无法点击,请将它复制到你的浏览器地址栏中进入访问,该链接24小时内有效。<br/>如果此次激活请求非你本人所发,请忽略本邮件。<br/><p style=&#39;text-align:right&#39;>-------- 脚本之家http://www.jb51.net敬上</p>";
  $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype);
  if ($rs == 1) {
    $msg = &#39;恭喜您,注册成功!<br/>请登录到您的邮箱及时激活您的帐号!&#39;;
  } else {
    $msg = $rs;
  }
  echo $msg;
}

active.php

active.php empfängt die übermittelten Linkinformationen und ruft den Wert des Parameters „Verify“ ab, bei dem es sich um den Aktivierungsidentifikationscode handelt. Fragen Sie ihn ab und vergleichen Sie ihn mit den Benutzerinformationen in der Datentabelle. Stellen Sie fest, ob er innerhalb des Gültigkeitszeitraums liegt. Setzen Sie das Statusfeld in der entsprechenden Benutzertabelle auf 1 wurde aktiviert. Damit ist die Aktivierungsfunktion abgeschlossen.


include_once("connect.php");//连接数据库
$verify = stripslashes(trim($_GET[&#39;verify&#39;]));
$nowtime = time();
$query = mysql_query("select id,token_exptime from t_user where status=&#39;0&#39; and
`token`=&#39;$verify&#39;");
$row = mysql_fetch_array($query);
if($row){
  if($nowtime>$row[&#39;token_exptime&#39;]){ //24hour
    $msg = &#39;您的激活有效期已过,请登录您的帐号重新发送激活邮件.&#39;;
  }else{
    mysql_query("update t_user set status=1 where id=".$row[&#39;id&#39;]);
    if(mysql_affected_rows($link)!=1) die(0);
    $msg = &#39;激活成功!&#39;;
  }
}else{
  $msg = &#39;error.&#39;;
}
echo $msg;

Nach erfolgreicher Aktivierung werden Sie feststellen, dass das Token-Feld nicht mehr nützlich ist und Sie können es löschen. Und der Statusaktivierungsstatus ändert sich auf 1.

Das obige ist der detaillierte Inhalt vonPHP implementiert eine Bestätigungs-E-Mail, um die Anmeldefunktion für neue Benutzer nach der Registrierung zu aktivieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn