Khi user quên mật khẩu

Khi user quên mật khẩu , web dev sẽ làm gì? Tạo mật khẩu mới rồi gửi cho họ, cơ bản là vậy. Sau đây là những gợi ý hướng dẫn thực hiện.

quen pass

Thực hiện theo gợi ý sau:

1. Tạo view quên mật khẩu

Trong file views/quenpass.php, trong đó tạo form như sau:

a. Thuộc tính method của form là post và thuộc tính là action là xulygoipass

b. Form có 1 textfield để nhập email và 1 nút submit

 <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet">
 <div class="col-md-9 m-auto" >
  <div class="card">
   <div class="card-header bg-info"> QUÊN MẬT KHẨU</div>
   <div class="card-body">
     <form class="form-horizontal" method="POST" action="..." >
         <p>  <label class="control-label">Email:</label>            
              <input class="form-control" name="email">     
         </p>       
         <p><button type="submit" class="btn btn-warning">Gửi mail</button></p>
     </form>
   </div>
 </div>
 </div>       

2. Tạo action quên mật khẩu

– Nạp view quenpass.php

3. Tạo action xử lý quên pass

– Tạo action xulyquenpass :

case "xulyquenpass" : $this->xulyquenpass(); break;

– Trong view quenpass.php, thuộc tính action của form, trỏ vào action xulyquenpass vừa tạo

– Code trong hàm xulyquenpass theo gợi ý sau:

a. Tiếp nhận email :     $email = $_POST[’email’];

b. Nếu  $email là rỗng thì báo lỗi

c. Nếu $email không đúng dạng (dùng hàm filter_var) thì báo lỗi

d. Nếu $email không có trong bảng users thì báo lỗi

e. Tạo chuỗi ngẫu nhiên để làm mật khẩu mới:  $passnew = substr(md5(rand(0,9999),0,6);

f. Cập nhật mật khẩu mới tạo vào bảng users mật khẩu  (có thể mã hóa nếu cần)

g. Gởi mail cho user chuỗi ngẫu nhiên (chưa mã hóa)

f. Chuyển hướng đến trang khác (thông báo, trang chủ…)


Tại sao khi user quên mật khẩu thì chúng tas phải gởi mail? Vì mật khẩu của user trong database thường phải mã hóa để đảm bảo an toàn, admin không thể biết mật khẩu của mọi người, và cũng không rãnh để cung cấp mật khẩu khi user quên.

Gửi mail cho họ là cách tốt nhất, tuy nhiên, có giải pháp khác là gửi token thôi (string ngẫu nhiên) cho so khớp thì chúng ta hiện ra trang reset pass để họ nhập mật khẩu mới. Cách làm này sẽ có hướng dẫn sau nhé.