Bạn có ba cách tiếp cận chung:
- Store trang trước đó trong phiên giao dịch;
- Lưu trữ trang dưới dạng biến GET; hoặc
- Thực hiện chuyển hướng nội bộ đến trang đăng nhập.
(1) trông giống như sau:
<?php
session_start();
if (!$_SESSION['userid']) {
$_SESSION['page'] = '/contact';
header('Location: /login');
exit;
}
...
?>
On đăng nhập thành công lấy $_SESSION['page']
và chuyển hướng.
(2) tương tự ngoại trừ không có biến phiên. Thay vào đó, bạn có:
header('Location: /login?return=/contact');
để chuyển hướng. Trang đăng nhập sẽ phải bao gồm nó dưới dạng một trường biểu mẫu ẩn trên trang trình bày người dùng với yêu cầu tên người dùng và mật khẩu.
(3) tương tự nhưng không chuyển hướng đến một trang riêng biệt. Thay vào đó, mỗi trang có thể là trang đăng nhập. Nếu người dùng không đăng nhập vào biểu mẫu đăng nhập được trình bày thay thế. URL sẽ vẫn là "/ liên hệ". Mỗi trang sẽ phát hiện và xử lý các lần đăng nhập.
Ưu điểm của phương pháp này là một chuyển hướng bên ngoài ít hơn và dễ dàng hơn trong việc xử lý biểu mẫu đã gửi. Bởi điều này tôi có nghĩa là tưởng tượng một người nào đó điền vào một mẫu trên một trong các trang của bạn và sau đó nhấp chuột gửi. Hệ thống nhìn thấy thông tin đăng nhập của họ đã hết hạn. Nếu bạn chuyển hướng người dùng đến trang mới và sau đó chuyển hướng lại, họ có thể sẽ cần phải nhập lại tất cả các trường biểu mẫu. Nếu bạn xử lý việc đăng nhập ngầm, bạn có thể bao gồm tất cả các trường biểu mẫu dưới dạng các mục nhập bị ẩn và sau khi đã đăng nhập một cách liền mạch coi đó là một lần gửi trang gốc.
câu hỏi hay và chào mừng bạn đến với SO :) –
Câu hỏi hay là tôi nghĩ nhiều lập trình viên sẽ cần phải biết câu trả lời của nó. Cảm ơn. – TopDeveloper