Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Funktion zum Abrufen vergessener Passwörter in PHP

So implementieren Sie die Funktion zum Abrufen vergessener Passwörter in PHP

藏色散人
藏色散人Original
2020-11-16 09:21:404566Durchsuche

So implementieren Sie die Funktion zum Abrufen vergessener Passwörter in PHP: 1. Benutzer müssen bei der Registrierung eine E-MAIL angeben. 2. Öffnen Sie das Formular und geben Sie die für die Registrierung verwendete E-MAIL ein. 3. Suchen Sie die Benutzerinformationen aus der Datenbank , Und aktualisieren Sie das Passwort des Benutzers auf ein temporäres Passwort. 4. Verwenden Sie die Jmail-Funktion, um das Passwort zu ändern.

So implementieren Sie die Funktion zum Abrufen vergessener Passwörter in PHP

Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP5.6. Dieser Artikel gilt für alle Computermarken.

Empfohlen: „PHP-Video-Tutorial

Einfache Implementierung der Funktion zum Abrufen von PHP-Mitgliedskennwörtern

Einstellungsideen

1. Benutzer müssen bei der Registrierung eine E-MAIL angeben. Der Zweck besteht darin, diese E-Mail-Adresse zu verwenden Passwörter abrufen.

2. Wenn der Benutzer sein Passwort oder seinen Benutzernamen vergisst, klicken Sie auf der Anmeldeseite auf den Hyperlink „Passwort abrufen“, öffnen Sie das Formular, geben Sie die für die Registrierung verwendete E-Mail-Adresse ein und senden Sie es ab.

3. Das System findet die Benutzerinformationen aus der Datenbank über das Postfach und aktualisiert das Passwort des Benutzers auf ein temporäres Passwort (zum Beispiel: 12345678).

4. Das System verwendet die Jmail-Funktion, um die Informationen des Benutzers an die Mailbox des Benutzers zu senden (der Inhalt umfasst: Benutzername, temporäres Passwort und Aufforderungen, den Benutzer daran zu erinnern, das temporäre Passwort rechtzeitig zu ändern).

5. Benutzer können sich mit einem temporären Passwort anmelden.

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.

Der Code lautet wie folgt:

<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="http://www.bitscn.com/pdb/php/201609/提 交"></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 sendmail.php . sendmail.php ist dafür verantwortlich, zu überprüfen, ob die E-Mail-Adresse vorhanden ist, und sendet die entsprechenden Verarbeitungsergebnisse an die Startseite. Bitte sehen Sie sich den jQuery-Code an:

Der Code lautet wie folgt

$(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 lautet Sehr praktisch und prägnant, um den interaktiven Front-End-Vorgang abzuschließen. Wenn Sie über eine bestimmte jQuery-Grundlage verfügen, ist der obige Code selbsterklärend und erfordert keine 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 aus dem Internet heruntergeladene Demo nicht verwenden können oder anderen Dateien ist 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 zu generieren Rufen Sie das Passwort ab 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.

Der Code lautet wie folgt:

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 = "/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 = "www.bitsCN.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. Im E-Mail-Inhalt befindet sich ein URL-Link, um die E-Mail zu überprüfen.

Der Code lautet wie folgt:

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 zunächst die Parameter E-Mail und Token und prüft dann anhand der E-Mail, ob die E-Mail vorhanden ist Die Token-Kombinationsmethode ist dieselbe wie in sendmail.php. Erstellen Sie den Token-Wert und vergleichen Sie ihn dann mit dem von der URL übergebenen Token. Wenn die Differenz zwischen der aktuellen Zeit und der Zeit, zu der die E-Mail gesendet wird, mehr als 24 Stunden beträgt, wird dies der Fall sein Eingabeaufforderung „Der Link ist abgelaufen!“. Andernfalls bedeutet dies, dass der Link gültig ist und zur Seite „Passwort festlegen“ weitergeleitet wird und der Benutzer schließlich selbst ein neues Passwort festlegt.

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.

Fügen Sie abschließend die Datentabelle t_user-Struktur hinzu:

Der Code lautet wie folgt: hier nicht vorgestellt werden Sie können auf dieser Website nach der entsprechenden Datenbankverbindungs-MySQL-Klasse suchen

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Funktion zum Abrufen vergessener Passwörter 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