if (isset($_SESSION['last_ip']) === false) {
$_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
Trên đang có nghĩa là nếu phiên "last_ip" chưa được tạo, nó sẽ được tạo ra và lưu trữ giá trị của ip hiện tại của người dùng.
if ($_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
Trên đang chỉ ra rằng nếu giá trị phiên họp của "last_ip" không bằng ip hiện tại của bạn, nó sẽ giải phóng tất cả các biến phiên (session_unset) và phá hủy tất cả dữ liệu đăng ký một phiên (session_destroy).
Hãy mô tả kịch bản thực tế.
ví dụ: Tôi truy cập vào trang web của bạn để khối mã lưu trữ ip hiện tại của tôi. Bây giờ internet của tôi đã bị ngắt kết nối và tôi kết nối lại với isp của tôi trong đó có dhcp kích hoạt và cung cấp cho ip mới tôi. Vì vậy, nếu truy cập vào trang web của bạn một lần nữa, khối thứ hai kiểm tra mã mà tôi có IP khác nhau vì vậy nó sẽ đăng xuất tôi.
Cũng chỉnh sửa khối thứ hai của mã này để nếu phiên "last_ip" chưa được tạo, nó sẽ không ném thông báo php.
if (isset($_SESSION['last_ip']) && $_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
Nguồn
2016-01-27 06:28:55
nếu phiên bị xóa, người dùng sẽ có thể nhận phiên mới từ ip mới nếu họ đăng nhập –
Có, họ sẽ làm. – Halcyon
tôi có thêm session_regenerate_id (true); Vậy 2 cái này hoạt động như thế nào? –