Trong hướng dẫn trước, bạn đã học cách tạo biểu mẫu cho phép người dùng đăng ký tài khoản. Sau khi người dùng đăng ký thành công, bạn chuyển hướng họ đến trang đăng nhập để họ có thể sử dụng tên người dùng và mật khẩu của mình để đăng nhập
Trang đăng nhập sẽ chứa một biểu mẫu bao gồm đầu vào tên người dùng và mật khẩu và nút đăng nhập như sau
Để đăng nhập, người dùng cần nhập tên người dùng và mật khẩu và nhấp vào nút đăng nhập
Nếu tên người dùng và mật khẩu trùng khớp, bạn có thể chuyển hướng chúng đến trang được bảo vệ bằng mật khẩu. Nếu không, bạn chuyển hướng người dùng trở lại trang đăng nhập với thông báo lỗi
Lưu ý rằng sẽ an toàn hơn khi đưa ra một thông báo chung [tên người dùng hoặc mật khẩu không hợp lệ] khi tên người dùng hoặc mật khẩu không khớp
Tạo biểu mẫu đăng nhập
Đầu tiên, tạo trang
Code language: PHP [php]
Login
Username:Password:Login Register
Biểu mẫu đăng nhập gửi tới
0Code language: PHP [php]
Login
Username:Password:Login Register
Vì hàm
1 không tồn tại nên chúng ta cần định nghĩa nóCode language: PHP [php]
if [is_post_request[]] { // ... }
Định nghĩa hàm login[]
Hàm
1 chấp nhận tên người dùng và mật khẩu và trả về true nếu chúng hợp lệ. Logic của hàmCode language: PHP [php]
if [is_post_request[]] { // ... }
1 như sauCode language: PHP [php]
if [is_post_request[]] { // ... }
- Đầu tiên, tìm tên người dùng trong bảng
2. Nếu người dùng tồn tại, chuyển sang bước 2[$inputs, $errors] = filter[$_POST, [ 'username' => 'string | required', 'password' => 'string | required' ]];
- Thứ hai, xác minh xem mật khẩu có khớp không
- Thứ ba, nếu tên người dùng không tồn tại hoặc mật khẩu không khớp, hãy đưa ra thông báo lỗi
Để tìm người dùng từ bảng
2 theo tên người dùng, bạn có thể xác định hàmCode language: PHP [php]
[$inputs, $errors] = filter[$_POST, [ 'username' => 'string | required', 'password' => 'string | required' ]];
4 trong tệpCode language: PHP [php]
[$inputs, $errors] = filter[$_POST, [ 'username' => 'string | required', 'password' => 'string | required' ]];
5Code language: PHP [php]
[$inputs, $errors] = filter[$_POST, [ 'username' => 'string | required', 'password' => 'string | required' ]];
1Code language: PHP [php]
Login
Username:Password:Login Register
Nếu tên người dùng tồn tại trong bảng
2, hàmCode language: PHP [php]
[$inputs, $errors] = filter[$_POST, [ 'username' => 'string | required', 'password' => 'string | required' ]];
4 trả về một mảng kết hợp có hai phần tử có khóa là tên người dùng và mật khẩu. Nếu không, nó trả về falseCode language: PHP [php]
[$inputs, $errors] = filter[$_POST, [ 'username' => 'string | required', 'password' => 'string | required' ]];
Vì bạn lưu trữ hàm băm mật khẩu trong cơ sở dữ liệu, nên bạn cần sử dụng hàm
8 tích hợp để khớp mật khẩu đơn giản với hàm bămCode language: PHP [php]
[$inputs, $errors] = filter[$_POST, [ 'username' => 'string | required', 'password' => 'string | required' ]];
Hàm
9 trả về true nếu mật khẩu văn bản thuần túy khớp với hàm băm hoặc false nếu ngược lạiCode language: PHP [php]
[$inputs, $errors] = filter[$_POST, [ 'username' => 'string | required', 'password' => 'string | required' ]];
Nếu cả
0 vàCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
1 khớp nhau, bạn có thể đăng nhập người dùng. Để làm điều đó, bạn cần đặt một giá trị trongCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
2 chẳng hạn
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
Code language: PHP [php]
2Code language: PHP [php]
Login
Username:Password:Login Register
Trong các yêu cầu tiếp theo, bạn có thể kiểm tra biến
2 để xem người dùng có tên người dùng hiện đang đăng nhập hay không. Ví dụCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
3Code language: PHP [php]
Login
Username:Password:Login Register
Đây là hàm
1 hoàn chỉnhCode language: PHP [php]
if [is_post_request[]] { // ... }
4Code language: PHP [php]
Login
Username:Password:Login Register
Lưu ý rằng bạn nên gọi hàm
5 để tạo id phiên mới nếu khi người dùng bắt đầu đăng nhập. Nó giúp ngăn chặn cuộc tấn công cố định phiênCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
Phần sau định nghĩa hàm
6 trong src/auth. php, trả về true nếu người dùng hiện đang đăng nhậpCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
5Code language: PHP [php]
Login
Username:Password:Login Register
Nếu người dùng chưa đăng nhập, bạn có thể chuyển hướng họ đến trang đăng nhập. trang php. Phần sau định nghĩa hàm
7 chuyển hướng đến thông tin đăng nhập. trang php nếu người dùng hiện tại chưa đăng nhậpCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
6Code language: PHP [php]
Login
Username:Password:Login Register
Và bạn có thể gọi hàm
7 ở đầu bất kỳ trang nào yêu cầu đăng nhậpCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
Ví dụ, bạn có thể gọi nó trong trang
9 như thế nàyCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
7Code language: PHP [php]
Login
Username:Password:Login Register
Đăng xuất người dùng
Để đăng xuất người dùng, bạn cần xóa giá trị bạn đã đặt khi đăng nhập và chuyển hướng đến thông tin đăng nhập. trang php
Trong hàm
1, bạn thêm tên người dùng vào biếnCode language: PHP [php]
if [is_post_request[]] { // ... }
2. Do đó, bạn cần gỡ bỏ nó để đăng xuất người dùngCode language: PHP [php]
if [$errors] { redirect_with['login.php', [ 'errors' => $errors, 'inputs' => $inputs ]]; }
Phần sau định nghĩa hàm
8Code language: PHP [php]
Login
Username:Password:Login Register
Phần sau định nghĩa hàm
9Code language: PHP [php]
Login
Username:Password:Login Register
Tạo liên kết đăng xuất
Khi người dùng đăng nhập thành công, họ sẽ được chuyển hướng đến
4Code language: PHP [php]
if [is_post_request[]] { // ... }
Trên
4, bạn có thể hiển thị thông báo chào mừng cũng như liên kết đăng xuất như thế nàyCode language: PHP [php]
if [is_post_request[]] { // ... }