Điều thường xảy ra là cần phải phân chia khách truy cập thành mong muốn và không mong muốn, đồng thời trao cơ hội xem một số trang của trang web chỉ cho những người có tên người dùng và mật khẩu. Làm thế nào để làm điều này, ví dụ, trong ngôn ngữ lập trình kịch bản phía máy chủ PHP?
Hướng dẫn
Bước 1
Hãy sắp xếp theo cách dễ dàng nhất để bảo vệ các trang của bạn khỏi những người truy cập trái phép. Người mang thông tin về việc khách truy cập có được ủy quyền hay không sẽ là phiên. Phiên là một dạng tương tự của cookie trong trình duyệt, với điểm khác biệt duy nhất là chúng không được tạo trên máy tính của chúng tôi mà trên máy chủ. Và chúng được sử dụng cho mục đích tương tự như cookie - để lưu trữ thông tin khác nhau về chúng tôi trong khi chúng tôi đi từ trang này sang trang khác của một trang web. Khi chúng tôi đóng trình duyệt, máy chủ sẽ hủy phiên này và lần tiếp theo chúng tôi đăng nhập, nó sẽ tạo một phiên mới. Chúng tôi sử dụng cơ chế máy chủ này để ghi lại liệu người dùng đã đăng nhập vào phiên hay chưa. Đọc thông tin này, khi khách truy cập yêu cầu một trang, php-script sẽ mở quyền truy cập vào các trang được bảo vệ bằng mật khẩu hoặc đề nghị nhập tên người dùng và mật khẩu.
Bước 1: Tạo một trang để nhập thông tin đăng nhập và mật khẩu. Mã HTML của biểu mẫu ủy quyền ở dạng đơn giản nhất có thể trông giống như sau:
Đăng nhập:
Mật khẩu:
Ở đây (ở phần đầu của tệp), chúng tôi sẽ thêm php-code để kiểm tra tính chính xác của tên người dùng và mật khẩu mà khách truy cập đã nhập. Ở phần đầu, chúng tôi sẽ viết:
session_start ();
Lệnh này bắt đầu một phiên mới nếu một phiên chưa được tạo cho khách truy cập này.
Sau đó, hãy kiểm tra xem phiên có một biến có tên là 'userName' hay không - nó sẽ lưu tên nếu khách truy cập đã đăng nhập. Nếu có một biến như vậy, hãy chuyển hướng khách truy cập đến trang chính (index.php) và hoàn tất việc thực thi tập lệnh php này:
if ($ _ SESSION ['userName']) {
header ("Vị trí: index.php");
lối ra;
}
Phần còn lại của mã sẽ chỉ được thực thi nếu người dùng chưa nhập đúng tên người dùng và mật khẩu. Hãy chỉ ra thông tin đăng nhập và mật khẩu nào được coi là đúng:
$ validName = 'Tôi là của tôi!';
$ validPass = 'mật khẩu bí mật';
Sau đó, chúng tôi kiểm tra xem các giá trị được gửi từ biểu mẫu có khớp với các giá trị chính xác hay không. Vì chúng tôi đã chỉ định phương thức truyền dữ liệu POST trong biểu mẫu, nên chúng sẽ được đọc từ biến superglobal $ _POST:
if ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
header ("Vị trí: index.php");
lối ra;
}
Tại đây, mã trong dấu ngoặc nhọn {} sẽ được thực thi với các giá trị chính xác của tên người dùng và mật khẩu. Trên dòng $ _SESSION ['userName'] = $ validName; ma chúng tôi viết trong phiên một biến có tên là 'userName' chứa thông tin đăng nhập của người dùng hiện được ủy quyền. Đây sẽ là dấu hiệu cho thấy anh ta có thể truy cập ở mọi nơi miễn là phiên hiện tại của anh ta hợp lệ.
Và trong trường hợp dữ liệu không chính xác được nhập vào biểu mẫu, hãy thêm thông báo thích hợp:
tiếng vọng khác"
Đăng nhập hoặc mật khẩu không chính xác!
;
Tất cả mã cần được lưu vào một tệp có tên login.php sẽ giống như sau:
<? php
session_start ();
if ($ _ SESSION ['userName']) {
header ("Vị trí: index.php");
lối ra;
}
$ validName = 'Tôi là của tôi!';
$ validPass = 'mật khẩu bí mật';
if ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
header ("Vị trí: index.php");
lối ra;
}
tiếng vọng khác"
Đăng nhập hoặc mật khẩu không chính xác!
;
?>
Đăng nhập:
Mật khẩu:
Bước 2
Bước 2: Tạo khối ủy quyền - một tệp riêng biệt sẽ được kết nối với mỗi trang cần bảo vệ bằng mật khẩu. Tệp này sẽ chỉ chứa mã php, vì vậy phần mở rộng của nó sẽ là "php", và chúng tôi sẽ đặt tên cho nó theo truyền thống cho các tệp như vậy - "auth", tức là "auth.php". Và ở đây, ngay sau thẻ mở <? Php, sẽ có một hướng dẫn để bắt đầu một phiên:
session_start ();
Chúng ta có thể đọc tất cả các biến được lưu trữ trong phiên từ mảng siêu toàn cầu $ _SESSION. Chúng tôi cần kiểm tra giá trị của biến "userName" - nếu khách truy cập chưa đăng nhập, thì biến đó sẽ không có trong mảng và chúng tôi sẽ chuyển hướng anh ta đến trang để nhập tên người dùng và mật khẩu của mình:
if (! $ _ SESSION ['Authorised']) {
header ("Vị trí: login.php");
lối ra;
}
Tất cả mã cần được lưu vào tệp auth.php sẽ giống như sau:
<? php
session_start ();
if (! $ _ SESSION ['admin']) {
header ("Vị trí: enter.php");
lối ra;
}
?>
Bước 3
Bước 3: Sau khi chúng tôi lưu các tệp này trên máy chủ, nó sẽ vẫn còn trong tất cả các trang php cần được bảo vệ khỏi người dùng trái phép để kết nối khối ủy quyền. Có nghĩa là, ở đầu mỗi tệp php, bạn sẽ cần phải chèn mã này:
<? php
yêu cầu "auth.php";
?>
Và để thay đổi mật khẩu truy cập, bạn sẽ cần thay đổi giá trị của các biến này trong tệp login.php:
$ validName = 'Tôi là của tôi!';
$ validPass = 'mật khẩu bí mật';
$ validName - đăng nhập, $ validPass - mật khẩu.