Heim > Backend-Entwicklung > PHP-Tutorial > PHP+Mysql+jQuery realisiert die Funktion zum Abrufen von Passwörtern

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

墨辰丷
Freigeben: 2023-03-30 20:34:01
Original
1851 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Passwortabruffunktion von PHP+Mysql+jQuery vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Die sogenannte Passwort-Abruffunktion kann vergessene Passwörter nicht wirklich abrufen, da unsere Passwörter verschlüsselt und gespeichert werden. Im Allgemeinen generieren Entwickler nach Überprüfung der Benutzerinformationen ein neues Passwort oder generieren einen bestimmten Link und senden ihn eine E-Mail an das Postfach des Benutzers, und der Benutzer kann über den E-Mail-Link zum Modul zum Zurücksetzen des Passworts der Website ein neues Passwort zurücksetzen.

Natürlich nutzen einige Websites mittlerweile auch Handy-SMS, um Passwörter abzurufen. Das Prinzip besteht darin, Ihre Identität durch Senden eines Verifizierungscodes zu überprüfen, Sie müssen Ihr Passwort jedoch noch zurücksetzen um den Passwortabruf abzuschließen.

Die allgemeinen Schritte sind:

1. Geben Sie bei der Registrierung die E-Mail-Adresse des Benutzers ein Wenn die E-Mail-Adresse des Benutzers in der Benutzertabelle vorhanden ist, wird der Benutzer aufgefordert, die E-Mail-Adresse nicht zu registrieren. Erstellen Sie eine URL und senden Sie sie an die E-Mail-Adresse des Benutzers. Klicken Sie auf den URL-Link zum Website-Verifizierungsprogramm.
5 Tabelle durchsuchen Sie die vom Benutzer angeforderte Zeichenfolge und vergleichen Sie, ob die Benutzerinformationen korrekt sind.
6 Wenn sie korrekt sind, gehen Sie zur Seite zum Zurücksetzen des Passworts und versuchen Sie es erneut ungültig.


HTML

Wir platzieren eine Seite auf der Passwortabrufseite, auf der der Benutzer die für die Registrierung verwendete E-Mail-Adresse eingeben und dann die Front-End-JS an senden muss die Interaktion abwickeln.

 <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>
Nach dem Login kopieren

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 wenn es korrekt ist, sendet es eine Ajax-Anfrage im Hintergrund sendmail.php, sendmail.php ist für die Überprüfung der Existenz des Postfachs und das Senden von E-Mails verantwortlich und gibt die entsprechenden Verarbeitungsergebnisse an die Front-End-Seite zurück. 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>"); 
        } 
      }); 
    } 
  }); 
})
Nach dem Login kopieren

Der oben verwendete jQuery-Code ist 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 auf einen Blick klar 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 von jb51.net heruntergeladene Demo nicht verwenden können jquery oder andere Dateien sind falsch, was dazu führt, dass die erforderlichen Dateien nicht geladen werden können.


PHP

sendmail.php muss überprüfen, ob die E-Mail in der Systembenutzertabelle vorhanden ist. Wenn ja, lesen Sie die Benutzerinformationen und aktivieren Sie die Benutzer-ID und den Benutzernamen und Passwort an MD5 Encryption generiert eine spezielle Zeichenfolge als Bestätigungscode zum Abrufen des Passworts und erstellt 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.jb51.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 = "jb51.net - 找回密码"; 
  $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; 
}
Nach dem Login kopieren

Okay, zu diesem Zeitpunkt erhalten Sie eine E-Mail zum Abrufen des Passworts von helloweba. Im E-Mail-Inhalt befindet sich ein URL-Link zur Datei „reset.php“ von jb51.net .

 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;
Nach dem Login kopieren

reset.php akzeptiert zunächst die Parameter E-Mail und Token und prüft dann, ob die E-Mail gemäß der E-Mail in der Datentabelle t_user vorhanden ist. Wenn vorhanden, werden die Benutzerinformationen und die Token-Kombinationsmethode abgerufen In sendmail.php ist der Token-Wert derselbe und vergleicht ihn dann mit dem von der URL übergebenen Token. Wenn der Unterschied zwischen der aktuellen Zeit und der Zeit, zu der die E-Mail gesendet wird, mehr als 24 Stunden beträgt, wird Folgendes angezeigt: Der Link ist abgelaufen!“ Andernfalls bedeutet dies, dass der Link gültig ist und weitergeleitet wird. Seite „Passwort festlegen“ und schließlich legt der Benutzer selbst ein neues Passwort fest.

Zusammenfassung: Durch die Überprüfung registrierter E-Mails und den Abruf von Passwörtern per E-Mail kennen wir in diesem Artikel die Anwendung des E-Mail-Versands bei der Website-Entwicklung und ihre Bedeutung. Natürlich sind auch SMS-Verifizierungsanwendungen beliebt, die entsprechende SMS erfordern Schnittstellen Einfach verbinden.

Schließlich ist die Datentabelle t_user-Struktur beigefügt:

 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;
Nach dem Login kopieren


Zusammenfassung:

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP+jQuery+MySql-Implementierung roter und blauer Abstimmungsbeispiele

Yii-Framework in PHP Grundlegende Verwendung

Grundkenntnisse und Anwendung von PHP-Designmustern

Das obige ist der detaillierte Inhalt vonPHP+Mysql+jQuery realisiert die Funktion zum Abrufen von Passwörtern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage