


(Fortgeschritten) PHP implementiert die E-Mail-Verifizierung und Kontoaktivierung nach der Benutzerregistrierung
Wenn wir Mitglieder auf vielen Websites registrieren, sendet das System nach Abschluss der Registrierung automatisch eine E-Mail an das Postfach des Benutzers. Der Inhalt dieser E-Mail ist ein URL-Link, um ihn zu aktivieren die Registrierung auf der Website. Die Mitgliedschaftsfunktionen können erst nach erfolgreicher Aktivierung normal genutzt werden.
In diesem Artikel wird anhand von Beispielen erläutert, wie PHP+Mysql verwendet wird, um die Funktionen zum Registrieren eines Kontos, Senden von Aktivierungs-E-Mails, Überprüfen von Aktivierungskonten und Behandeln des Ablaufs von URL-Links abzuschließen .
Geschäftsprozess
1. Der Benutzer übermittelt Registrierungsinformationen.
2. In die Datenbank schreiben. Der Kontostatus ist derzeit nicht aktiviert.
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.
Datentabelle vorbereiten
Das Feld E-Mail in der Benutzerinformationstabelle ist sehr wichtig. Es kann zum Überprüfen von Benutzern, zum Abrufen von Passwörtern und sogar für Website-Partys zum Sammeln verwendet werden Benutzerinformationen für E-Mail-Marketing. 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
Platzieren Sie ein Registrierungsformular auf der Seite, und der Benutzer kann sich registrieren Informationen, 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>
Für die Benutzereingabe ist eine erforderliche Frontend-Verifizierung erforderlich. Wir empfehlen Ihnen, den Artikel auf dieser Website zu lesen: Beispiele zur Erläuterung der Anwendung des Formularverifizierungs-Plug-ins Validierung. In diesem Artikel wird der Front-End-Bestätigungscode übersprungen. Außerdem sollte es auf der Seite ein Eingabefeld geben, in dem der Benutzer das Passwort erneut eingeben muss.
register.php
Der Benutzer übermittelt die Registrierungsinformationen zur Verarbeitung an register.php. register.php muss zwei Hauptfunktionen erfüllen: Daten schreiben und E-Mails senden.
Zunächst sind die beiden notwendigen Dateien connect.php und smtp.class.php im mitgelieferten Download-Paket enthalten.
include_once("connect.php");//连接数据库 include_once("smtp.class.php");//邮件发送类
Dann müssen wir die vom Benutzer übermittelten Informationen filtern und überprüfen, ob der Benutzername vorhanden ist (das Frontend kann dies auch überprüfen).
$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; }
Dann verschlüsseln wir das Benutzerpasswort und erstellen den Aktivierungsidentifikationscode:
$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);
Im obigen Code ist $token der konstruierte Aktivierungsidentifikationscode, der sich aus dem zusammensetzt Benutzername, Das Passwort setzt sich aus der aktuellen Uhrzeit zusammen und ist mit md5 verschlüsselt. 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()){ $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;
Es gibt auch eine sehr benutzerfreundliche und leistungsstarke E-Mail-Versandklasse, die Sie mit allen teilen können: Verwenden Sie PHPMailer, um E-Mails mit Anhängen zu senden und HTML-Inhalte zu unterstützen kann es direkt verwenden.
active.php
Wenn nichts schief geht, erhält die E-Mail-Adresse, die Sie bei der Registrierung Ihres Kontos eingegeben haben, eine E-Mail von helloweba. Zu diesem Zeitpunkt können Sie direkt auf den Aktivierungslink klicken und ihn übergeben um zu active.php zu wechseln.
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)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

Die offizielle Website von Deepseek startet jetzt mehrere Rabattaktivitäten, um den Benutzern ein Einkaufserlebnis zu bieten. Neue Benutzer melden sich an, um einen Gutschein in Höhe von 10 US -Dollar zu erhalten, und genießen einen begrenzten Zeitraum von 15% für das gesamte Publikum. Empfehlen Sie Freunde können auch Belohnungen verdienen, und Sie können Punkte für die Erlösung von Geschenken beim Einkaufen sammeln. Die Veranstaltungsfristen sind unterschiedlich.

In PHP können Sie CSRF -Angriffe effektiv verhindern, indem Sie unvorhersehbare Token verwenden. Spezifische Methoden umfassen: 1. CSRF -Token in der Form erzeugen und einbetten; 2. Überprüfen Sie die Gültigkeit des Tokens bei der Bearbeitung der Anfrage.

In PHP8 sind Übereinstimmungsausdrücke eine neue Kontrollstruktur, die unterschiedliche Ergebnisse basierend auf dem Wert des Expression zurückgibt. 1) Es ähnelt einer Switch -Anweisung, gibt jedoch einen Wert anstelle eines Ausführungsanweisungsblocks zurück. 2) Der Match -Ausdruck wird streng verglichen (===), was die Sicherheit verbessert. 3) Es vermeidet mögliche Auslassungen in Switch -Anweisungen und verbessert die Einfachheit und Lesbarkeit des Codes.
