session_destroy()
kết thúc toàn bộ phiên, có nghĩa là nó sẽ bị xóa khỏi bộ nhớ phiên của PHP và không bao giờ có thể được sử dụng lại. Nếu bạn không chỉ đặt biến phiên và cookie, phiên sẽ vẫn là phía máy chủ đang hoạt động và có thể được tái chế nếu một số biến phiên được đặt lại và cookie có ID phiên ban đầu được gửi lại cho khách hàng.
Để đặt theo cách khác: một phiên cơ bản bao gồm ID bí mật được lưu trữ ở đâu đó trên máy chủ web, cùng với các biến phiên được đăng ký cho phiên đó. ID phiên được gửi đến máy khách (thường là cookie) để khách hàng có thể được xác định là 'chủ sở hữu' của phiên trên các yêu cầu sau này. Giả sử một phiên đã được tạo ra và có các biến đăng ký với nó, đây là một cái nhìn tổng quan về những gì các chức năng thực hiện:
session_start()
nhập khẩu tất cả các biến phiên thuộc session ID mà khách hàng gửi từ registry phiên đến $_SESSION
mảng
session_unset()
hoặc gọi unset()
trên $_SESSION
biến sẽ xóa tất cả các biến đăng ký phiên hiện tại, nhưng nó sẽ không rõ ràng phiên bản thân
- unset cookie phiên họp của khách hàng sẽ báo hiệu cho cli cho rằng phiên đã kết thúc, nhưng này sẽ không xóa xóa phiên khỏi đăng ký phiên trên máy chủ hoặc
session_destroy()
là chức năng duy nhất thực sự làm sạch phiên khỏi đăng ký phiên, do đó nghĩa là 'hủy' phiên
trong khi session_destroy()
sẽ unregister tất cả các biến session, nó sẽ không xóa $_SESSION
mảng trong kịch bản hiện đang được thực hiện, do đó, nó vẫn còn là một ý tưởng tốt để bỏ đặt biến session để ngăn chặn lỗi và các vấn đề an ninh.
Trên một lưu ý liên quan, hướng dẫn PHP khuyến cáo không sử dụng session_unset()
mà là unset các phím từ $_SESSION
:
Nếu $_SESSION
(hoặc $HTTP_SESSION_VARS
cho PHP 4.0.6 trở xuống) được sử dụng, sử dụng unset()
để hủy đăng ký biến phiên, tức là unset($_SESSION['varname']);
.
Nguồn
2012-03-02 18:51:22
http://us.php.net/manual/en/function.session-destroy.php –
Cảm ơn bạn rất nhiều, tôi đã đọc nhiều lần nhưng không thể hiểu nó làm gì. Tại sao nó không thực sự phá hủy phiên. Để hủy phiên, tôi phải sử dụng hai bước nữa. Nhưng trong thực tế session_destroy() nên làm những bước cho tôi. – Green
Nếu câu trả lời * Mã khác * đã cung cấp cho bạn thông tin bạn cần (Tôi không thể thấy nó không thể), bạn có chấp nhận nó không? Đó thường là cách mọi thứ được thực hiện ở đây: p – RobinJ