Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Funktion zum Abrufen eines vergessenen Passworts in PHP

So implementieren Sie die Funktion zum Abrufen eines vergessenen Passworts in PHP

藏色散人
藏色散人Original
2020-11-24 10:07:503393Durchsuche

PHP implementiert die Funktion zum Vergessen des Passworts: Geben Sie bei der Registrierung zuerst die E-Mail-Adresse ein, überprüfen Sie dann, ob die E-Mail-Adresse des Benutzers korrekt ist, und erstellen Sie eine URL, die an den Benutzer gesendet werden soll E-Mail-Adresse; schließlich implementieren Sie die Login-E-Mail-Adresse des Benutzers, um E-Mails zu erhalten, und rufen Sie die Seite zum Zurücksetzen des Passworts auf, um ein neues Passwort zurückzusetzen.

So implementieren Sie die Funktion zum Abrufen eines vergessenen Passworts in PHP

Empfohlen: „PHP-Video-Tutorial

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 5.6. Diese Methode ist für alle Computermarken geeignet.

PHP+Mysql+jQuery realisiert eine Funktion zum Abrufen von Passwörtern

Natürlich verfügen einige Websites jetzt auch über die Methode zum Abrufen von Passwörtern per SMS. Das Prinzip besteht darin, die Identität durch Senden eines Bestätigungscodes zu überprüfen Dies entspricht dem Versenden einer E-Mail zur Bestätigung. Am Ende müssen Sie den Vorgang zum Abrufen Ihres Passworts noch abschließen, indem Sie es zurücksetzen.

Dieser Artikel verwendet PHP+Mysql+jQuery, um eine Passwort-Abruffunktion zu implementieren. Die allgemeinen Schritte sind:

1. Überprüfen Sie, ob die E-Mail-Adresse des Benutzers korrekt ist. Wenn die E-Mail-Adresse des Benutzers nicht in der Benutzertabelle vorhanden ist, wird angezeigt, dass das Postfach des Benutzers nicht registriert ist.

3 Wenn das Postfach des Benutzers in der Benutzertabelle vorhanden ist, kombinieren Sie die Zeichenfolge Wird verwendet, um die Benutzerinformationen zu überprüfen und eine URL zu erstellen, die an die Mailbox des Benutzers gesendet werden soll. 4. Der Benutzer meldet sich bei der Mailbox an, um die E-Mail zu erhalten, und klickt auf den URL-Link zum Website-Verifizierungsprogramm Das Website-Programm fragt die lokale Benutzertabelle anhand der vom Benutzer angeforderten Zeichenfolge ab und vergleicht, ob die Benutzerinformationen korrekt sind Benutzer, dass die Verifizierung ungültig ist.

HTML

Wir platzieren eine Seite auf der Seite zum Abrufen des Passworts, auf der der Benutzer die für die Registrierung verwendete E-Mail-Adresse eingeben muss, und senden dann die Front-End-JS, um die Interaktion abzuwickeln.

<p><strong>输入您注册的电子邮箱,找回密码:</strong></p>
<p><input type="text" class="input" name="email" id="email"><span id="chkmsg"></span></p>
<p><input type="button" class="btn" id="sub_btn" value="提 交"></p>

jQuery

Nachdem der Benutzer die E-Mail-Adresse eingegeben und auf „Senden“ geklickt hat, überprüft jQuery zunächst, ob das E-Mail-Format korrekt ist, und sendet eine Ajax-Anfrage an den Hintergrund, für den sendmail.php verantwortlich ist Überprüfen Sie, ob die E-Mail-Adresse vorhanden ist, und senden Sie die E-Mail. Die entsprechenden Verarbeitungsergebnisse werden an die Startseite zurückgegeben. Bitte beachten Sie den jQuery-Code:

$(function(){
$("#sub_btn").click(function(){
var email = $("#email").val();
var preg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; //匹配Email
if(email==&#39;&#39; || !preg.test(email)){
$("#chkmsg").html("请填写正确的邮箱!");
}else{
$("#sub_btn").attr("disabled","disabled").val(&#39;提交中..&#39;).css("cursor","default");
$.post("sendmail.php",{mail:email},function(msg){
if(msg=="noreg"){
$("#chkmsg").html("该邮箱尚未注册!");
$("#sub_btn").removeAttr("disabled").val(&#39;提 交&#39;).css("cursor","pointer");
}else{
$(".demo").html("<h3>"+msg+"</h3>");
}
});
}
});
})

Der oben verwendete jQuery-Code ist sehr praktisch und prägnant, um das Front-End interaktiv zu vervollständigen Wenn Sie über eine bestimmte jQuery-Grundlage verfügen, ist der obige Code auf einen Blick klar und erfordert keine große Erklärung.

Vergessen Sie natürlich nicht, die jQuery-Bibliotheksdatei auf die Seite zu laden. In 80 % der Fälle fragen mich einige Studenten, warum sie die von helloweba.net heruntergeladene Demo nicht verwenden können oder andere Dateien sind falsch und die erforderlichen Dateien werden nicht geladen.

PHP

sendmail.php muss überprüfen, ob die E-Mail in der Systembenutzertabelle vorhanden ist. Wenn ja, lesen Sie die Benutzerinformationen, verschlüsseln Sie die Benutzer-ID, den Benutzernamen und das Passwort mit MD5, um eine spezielle Zeichenfolge als Bestätigungscode zum Abrufen zu generieren Geben Sie das Passwort ein und erstellen Sie dann die URL. Um die Aktualität des URL-Links zu kontrollieren, zeichnen wir gleichzeitig die Vorgangszeit auf, wenn der Benutzer die Aktion zum Abrufen des Passworts sendet, und rufen schließlich die E-Mail-Sendeklasse auf, um die E-Mail an das Postfach des Benutzers zu senden Die Klasse smtp.class.php wurde gepackt, bitte laden Sie sie herunter.

include_once("connect.php");//连接数据库
$email = stripslashes(trim($_POST[&#39;mail&#39;]));
$sql = "select id,username,password from `t_user` where `email`=&#39;$email&#39;";
$query = mysql_query($sql);
$num = mysql_num_rows($query);
if($num==0){//该邮箱尚未注册!
echo &#39;noreg&#39;;
exit;
}else{
$row = mysql_fetch_array($query);
$getpasstime = time();
$uid = $row[&#39;id&#39;];
$token = md5($uid.$row[&#39;username&#39;].$row[&#39;password&#39;]);//组合验证码
$url = "http://www.helloweba.net/demo/resetpass/reset.php?email=".$email."
&token=".$token;//构造URL
$time = date(&#39;Y-m-d H:i&#39;);
$result = sendmail($time,$email,$url);
if($result==1){//邮件发送成功
$msg = &#39;系统已向您的邮箱发送了一封邮件<br/>请登录到您的邮箱及时重置您的密码!&#39;;
//更新数据发送时间
mysql_query("update `t_user` set `getpasstime`=&#39;$getpasstime&#39; where id=&#39;$uid &#39;");
}else{
$msg = $result;
}
echo $msg;
}
//发送邮件
function sendmail($time,$email,$url){
include_once("smtp.class.php");
$smtpserver = ""; //SMTP服务器,如smtp.163.com
    $smtpserverport = 25; //SMTP服务器端口
    $smtpusermail = ""; //SMTP服务器的用户邮箱
    $smtpuser = ""; //SMTP服务器的用户帐号
    $smtppass = ""; //SMTP服务器的用户密码
    $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); 
    //这里面的一个true是表示使用身份验证,否则不使用身份验证.
    $emailtype = "HTML"; //信件类型,文本:text;网页:HTML
    $smtpemailto = $email;
    $smtpemailfrom = $smtpusermail;
    $emailsubject = "Helloweba.com - 找回密码";
    $emailbody = "亲爱的".$email.":<br/>您在".$time."提交了找回密码请求。请点击下面的链接重置密码
(按钮24小时内有效)。<br/><a href=&#39;".$url."&#39;target=&#39;_blank&#39;>".$url."</a>";
    $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype);
return $rs;
}

Okay, zu diesem Zeitpunkt erhält Ihre E-Mail eine E-Mail zum Abrufen des Passworts. Der E-Mail-Inhalt enthält einen URL-Link. Klicken Sie auf den Link zu „reset.php“ von helloweba.net, um Ihre E-Mail zu bestätigen.

include_once("connect.php");//连接数据库
$token = stripslashes(trim($_GET[&#39;token&#39;]));
$email = stripslashes(trim($_GET[&#39;email&#39;]));
$sql = "select * from `t_user` where email=&#39;$email&#39;";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
if($row){
$mt = md5($row[&#39;id&#39;].$row[&#39;username&#39;].$row[&#39;password&#39;]);
if($mt==$token){
if(time()-$row[&#39;getpasstime&#39;]>24*60*60){
$msg = &#39;该链接已过期!&#39;;
}else{
//重置密码...
$msg = &#39;请重新设置密码,显示重置密码表单,<br/>这里只是演示,略过。&#39;;
}
}else{
$msg =  &#39;无效的链接&#39;;
}
}else{
$msg =  &#39;错误的链接!&#39;;
}
echo $msg;

reset.php akzeptiert zuerst die Parameter E-Mail und Token und fragt dann basierend auf der E-Mail ab, ob die E-Mail in der Datentabelle t_user vorhanden ist. Wenn vorhanden, rufen Sie die Benutzerinformationen ab und erstellen Sie den Tokenwert auf die gleiche Weise wie Vergleichen Sie die Token-Kombination in sendmail.php mit dem von der URL übergebenen Token. Wenn die Differenz zwischen der aktuellen Zeit und der Zeit, zu der die E-Mail gesendet wurde, mehr als 24 Stunden beträgt, wird die Meldung „Der Link ist abgelaufen“ angezeigt. Andernfalls bedeutet dies, dass der Link gültig ist und Sie zur Seite zum Zurücksetzen des Passworts weitergeleitet werden. Schließlich ist es Sache des Benutzers, ein neues Passwort festzulegen.

Zusammenfassung: Passwortabruf durch registrierte E-Mail-Verifizierung und die E-Mail dieses Artikels. Wir kennen die Anwendung des E-Mail-Versands in der Website-Entwicklung und ihre Bedeutung. Natürlich sind SMS-Verifizierungsanwendungen jetzt auch beliebt, und dies erfordert das entsprechende Andocken der SMS-Schnittstelle.

Schließlich hängen Sie die Datentabelle t_user-Struktur an:

CREATE TABLE `t_user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(30) NOT NULL,
  `password` varchar(32) NOT NULL,
  `email` varchar(50) NOT NULL,
  `getpasstime` int(10) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Funktion zum Abrufen eines vergessenen Passworts in PHP. 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
Vorheriger Artikel:So löschen Sie PHP-CookiesNächster Artikel:So löschen Sie PHP-Cookies