


PHP member password retrieval function implementation example introduction_PHP tutorial
If your website has a membership system, you must have an automatic password retrieval function, which is the forgotten password function. If the user forgets the password, he can directly retrieve the password through his email or mobile phone number. Let me introduce the email retrieval function. Password method.
Setting ideas
1. Users need to provide an E-MAIL when registering. The purpose is to use this email to retrieve the password.
2. When the user forgets their password or user name, click the "Retrieve Password" hyperlink on the login page, open the form, enter the email address used for registration, and submit.
3. The system finds the user information from the database through the mailbox, and updates the user's password to a temporary password (for example: 12345678).
4. The system uses the Jmail function to send the user's information to the user's mailbox (the content includes: user name, temporary password, and prompts to remind the user to change the temporary password in time).
5. Users can log in with a temporary password.
HTML
We place a page on the password retrieval page that requires the user to enter the email address used for registration, and then submit the front-end js to handle the interaction.
The code is as follows | Copy code | ||||
Enter your registered email address to retrieve your password:
|
代码如下 | 复制代码 |
$(function(){ "+msg+"");} }); } }); }) |
The code is as follows | Copy code |
$(function(){
$("#sub_btn").click(function(){
var email = $("#email").val();
var preg = /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/; //Match Email
If(email=='' || !preg.test(email)){
$("#chkmsg").html("Please fill in the correct email address!");
}else{
$("#sub_btn").attr("disabled","disabled").val('Submitting..').css("cursor","default");
$.post("sendmail.php",{mail:email},function(msg){
If(msg=="noreg"){
$("#sub_btn").removeAttr("disabled").val('submit').css("cursor","pointer");
}else{
$(".demo").html(""+msg+""); }); } }); }) |
The jQuery code used above is very convenient and concise to complete the front-end interactive operation. If you have a certain jQuery foundation, the above code is clear at a glance and does not require much explanation.
Of course, don’t forget to load the jQuery library file in the page. Some students often ask me why the demo downloaded from www.bKjia.c0m cannot be used. 80% of the time it is because the loading path of jquery or other files is wrong and it is not loaded. Necessary documents.
PHP
sendmail.php needs to verify whether the email exists in the system user table. If so, read the user information, encrypt the user ID, user name and password using md5 to generate a special string as a verification code to retrieve the password, and then Construct URL. At the same time, in order to control the timeliness of the URL link, we will record the operation time when the user submits the password retrieval action, and finally call the email sending class to send the email to the user's mailbox. The sending email class smtp.class.php has been packaged, please download it.
The code is as follows | Copy code | ||||
Please log in to your mailbox to reset your password in time! '; //Update data sending time mysql_query("update `t_user` set `getpasstime`='$getpasstime' where id='$uid '"); }else{ $msg = $result; } echo $msg; } //Send email function sendmail($time,$email,$url){ Include_once("smtp.class.php"); $smtpserver = ""; //SMTP server, such as smtp.163.com $smtpserverport = 25; //SMTP server port $smtpusermail = ""; //The user's email address of the SMTP server $smtpuser = ""; //SMTP server user account $smtppass = ""; //User password of SMTP server $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); //A true here means that authentication is used, otherwise authentication is not used. $emailtype = "HTML"; //Email type, text: text; web page: HTML $smtpemailto = $email; $smtpemailfrom = $smtpusermail; $emailsubject = "www.bKjia.c0m - Retrieve password"; $emailbody = "Dear ".$email.": You submitted a password retrieval request at ".$time.". Please click the link below to reset your password (The button is valid for 24 hours). ".$url.""; $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype); Return $rs; } |
Okay, at this time, you will receive a password retrieval email from helloweba in your email. There is a URL link in the email content. Click the link to reset.php of www.bKjia.c0m to verify your email.
The code is as follows | Copy code | ||||
$token = stripslashes(trim($_GET['token'])); $email = stripslashes(trim($_GET['email'])); $sql = "select * from `t_user` where email='$email'"; $query = mysql_query($sql); $row = mysql_fetch_array($query); if($row){ $mt = md5($row['id'].$row['username'].$row['password']); If($mt==$token){ If(time()-$row['getpasstime']>24*60*60){ $msg = 'This link has expired! '; }else{ //Reset password... Please reset the password, displays the reset password form, is displayed. This is just a demonstration, skip it. '; }else{ $msg = 'Invalid link'; } }else{ $msg = 'Wrong link! '; } echo $msg;
|
Summary: Through registered email verification and password retrieval via email in this article, we know the application of sending emails in website development and its importance. Of course, SMS verification applications are also popular now. This requires related SMS interface docking. .
Finally, attach the data table t_user structure:
代码如下 | 复制代码 |
CREATE TABLE `t_user` ( |
The code is as follows | Copy code |
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; |
smtp.class.php类文件
代码如下 | 复制代码 |
class Smtp{ /* Public Variables */ var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; /* Private Variables */ /* Constractor */ function smtp($relay_host = "", $smtp_port = 25, $auth = false, $user, $pass) { $this->smtp_port = $smtp_port; $this->relay_host = $relay_host; $this->time_out = 30; //is used in fsockopen() $this->auth = $auth; //auth $this->user = $user; $this->pass = $pass; $this->host_name = "localhost"; //is used in HELO command $this->sock = false; /* Main Function */ function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "") { $body = ereg_replace("(^|(rn))(.)", "1.3", $body); $header .= "MIME-Version:1.0rn"; if ($mailtype == "HTML") { $header .= "To: " . $to . "rn"; if ($cc != "") { $header .= "From: $from<" . $from . ">rn"; $header .= "Subject: " . $subject . "rn"; $header .= $additional_headers; $header .= "Date: " . date("r") . "rn"; $header .= "X-Mailer:By Redhat (PHP/" . phpversion() . ")rn"; list ($msec, $sec) = explode(" ", microtime()); $header .= "Message-ID: <" . date("YmdHis", $sec) . "." . ($msec * 1000000) . "." . $mail_from . ">rn"; $TO = explode(",", $this->strip_comment($to)); if ($cc != "") { if ($bcc != "") { $sent = true; foreach ($TO as $rcpt_to) { if (!$this->smtp_sockopen($rcpt_to)) { $sent = false; continue; if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) { $sent = false; fclose($this->sock); $this->log_write("Disconnected from remote hostn"); return $sent; /* Private Functions */ function smtp_send($helo, $from, $to, $header, $body = "") { if (!$this->smtp_putcmd("", base64_encode($this->pass))) { if (!$this->smtp_putcmd("MAIL", "FROM:<" . $from . ">")) { if (!$this->smtp_putcmd("RCPT", "TO:<" . $to . ">")) { if (!$this->smtp_putcmd("DATA")) { if (!$this->smtp_message($header, $body)) { if (!$this->smtp_eom()) { if (!$this->smtp_putcmd("QUIT")) { return true; function smtp_sockopen($address) { function smtp_sockopen_relay() { $this->sock = @ fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out); if (!($this->sock && $this->smtp_ok())) { $this->log_write("Error: " . $errstr . " (" . $errno . ")n"); return false; $this->log_write("Connected to relay host " . $this->relay_host . "n"); return true; function smtp_sockopen_mx($address) { if (!@ getmxrr($domain, $MXHOSTS)) { return false; foreach ($MXHOSTS as $host) { $this->sock = @ fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out); if (!($this->sock && $this->smtp_ok())) { $this->log_write("Error: " . $errstr . " (" . $errno . ")n"); continue; $this->log_write("Connected to mx host " . $host . "n"); return true; $this->log_write("Error: Cannot connect to any mx hosts (" . implode(", ", $MXHOSTS) . ")n"); return false; function smtp_message($header, $body) { $this->smtp_debug("> " . str_replace("rn", "n" . "> ", $header . "n> " . $body . "n> ")); return true; function smtp_eom() { $this->smtp_debug(". [EOM]n"); return $this->smtp_ok(); function smtp_ok() { $this->smtp_debug($response . "n"); if (!ereg("^[23]", $response)) { fgets($this->sock, 512); $this->log_write("Error: Remote host returned "" . $response . ""n"); return false; return true; function smtp_putcmd($cmd, $arg = "") { else fputs($this->sock, $cmd . "rn"); $this->smtp_debug("> " . $cmd . "n"); return $this->smtp_ok(); function smtp_error($string) { return false; function log_write($message) { if ($this->log_file == "") { $message = date("M d H:i:s ") . get_current_user() . "[" . getmypid() . "]: " . $message; if (!@ file_exists($this->log_file) || !($fp = @ fopen($this->log_file, "a"))) { return false; flock($fp, LOCK_EX); fputs($fp, $message); fclose($fp); return true; function strip_comment($address) { while (ereg($comment, $address)) { return $address; function get_address($address) { $address = ereg_replace("^.*<(.+)>.*$", "1", $address); return $address; function smtp_debug($message) { |
最后面有个数据库连接类,这里就不介绍了大大家可以百本站找相关的数据库连接mysql类哦。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

In PHP8, match expressions are a new control structure that returns different results based on the value of the expression. 1) It is similar to a switch statement, but returns a value instead of an execution statement block. 2) The match expression is strictly compared (===), which improves security. 3) It avoids possible break omissions in switch statements and enhances the simplicity and readability of the code.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.
