Heim  >  Artikel  >  Backend-Entwicklung  >  (Fortgeschritten) PHP+Mysql+jQuery zum Abrufen des Passworts

(Fortgeschritten) PHP+Mysql+jQuery zum Abrufen des Passworts

黄舟
黄舟Original
2017-02-07 09:14:231206Durchsuche

Der Code lautet wie folgt:

Die allgemein bekannte Funktion zum Abrufen von Passwörtern kann vergessene Passwörter nicht wirklich abrufen, da unsere Passwörter verschlüsselt und gespeichert werden. Im Allgemeinen überprüfen Entwickler die Benutzerinformationen, indem das Programm ein neues generiert Passwort oder generiert einen spezifischen Link und sendet eine E-Mail an die E-Mail-Adresse des Benutzers. Der Benutzer verlinkt dann auf das Modul zum Zurücksetzen des Passworts der Website, um ein neues Passwort zurückzusetzen.

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 trotzdem zurücksetzen um den Passwortabruf abzuschließen.

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

1. Geben Sie die E-Mail-Adresse bei der Registrierung ein >2. Überprüfen Sie, ob die E-Mail-Adresse des Benutzers in der Benutzertabelle der Website nicht vorhanden ist.

3 Senden Sie eine E-Mail Die E-Mail-Adresse des Benutzers ist in der Benutzertabelle vorhanden. Die Kombination wird verwendet, um die Informationszeichenfolge zu überprüfen und eine URL zum Senden an das Postfach des Benutzers zu erstellen Empfangen Sie die E-Mail und klicken Sie auf den URL-Link zum Website-Verifizierungsprogramm. 5. Das Website-Programm leitet die Anfrage des Benutzers weiter und vergleicht, ob die Benutzerinformationen korrekt sind 🎜> 6. Wenn es korrekt ist, gehen Sie zur Seite zum Zurücksetzen des Passworts, um ein neues Passwort zurückzusetzen. Andernfalls wird der Benutzer darüber informiert, dass die Bestätigung ungültig ist.

Wir platzieren eine Seite auf der Passwortabrufseite, 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.

Nachdem der Benutzer seine 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 sendmail.php im Hintergrund ist dafür verantwortlich, zu überprüfen, ob die E-Mail-Adresse existiert, und sie per E-Mail zu senden. Bitte beachten Sie den jQuery-Code:


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. Einige Studenten fragen mich oft, warum sie die von helloweba.com heruntergeladene Demo nicht verwenden können Der Ladepfad von JQuery oder anderen Dateien ist falsch. Laden Sie die erforderlichen Dateien.

<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>
sendmail.php muss überprüfen, ob die E-Mail in der Systembenutzertabelle vorhanden ist. Wenn ja, lesen Sie die Benutzerinformationen, verwenden Sie die MD5-Verschlüsselung, um eine spezielle Zeichenfolge als Bestätigung zum Abrufen des Passworts zu generieren Konstruieren Sie die URL. Um die Aktualität des URL-Links zu steuern, zeichnen wir gleichzeitig die Vorgangszeit auf, in der der Benutzer die Kennwortabrufaktion übermittelt, und rufen schließlich die E-Mail-Sendeklasse auf, um die E-Mail an das Postfach des Benutzers zu senden E-Mail

$(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>"); 
                } 
            }); 
        } 
    }); 
})
Okay, jetzt erhalten Sie eine E-Mail zum Abrufen des Passworts von helloweba. Klicken Sie auf den Link zu „reset.php“ von helloweba.com, um Ihre E-Mail zu bestätigen .

reset.php akzeptiert zunächst die Parameter E-Mail und Token und prüft dann anhand der E-Mail, ob die E-Mail in der Datentabelle t_user vorhanden ist. Wenn vorhanden, rufen Sie die Benutzerinformationen ab und kombinieren Sie sie mit dem token in sendmail.php Erstellen Sie den Token-Wert auf die gleiche Weise und vergleichen Sie 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 eine Meldung angezeigt „Der Link ist abgelaufen!“. Andernfalls bedeutet dies, dass der Link gültig ist und zur Seite „Passwort zurücksetzen“ weitergeleitet wird. Anschließend legt der Benutzer 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.

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.com/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; 
}
Fügen Sie abschließend die Struktur der Datentabelle t_user hinzu:

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;
Das Obige ist der (erweiterte) Inhalt zum Abrufen von PHP+Mysql+jQuery-Passwörtern. Weitere verwandte Inhalte finden Sie unter PHP Chinesisches Netz (www.php.cn)!

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