2012-01-04 32 views
18

Tôi có id phiên của ứng dụng của mình. bây giờ tôi muốn nhận tất cả các biến phiên bằng cách sử dụng id phiên này.cách nhận các biến phiên sử dụng id phiên

Tôi đã sử dụng <?php echo session_id()?> để nhận id phiên nhưng cách nhận tất cả các giá trị đối tượng phiên bằng cách sử dụng id phiên này?

+1

Chỉ có một câu trả lời cho biết làm thế nào để có được dữ liệu phiên sử dụng session_id. –

Trả lời

51

Theo php.net: Có một số cách để rò rỉ id phiên hiện tại cho bên thứ ba. ID phiên bị rò rỉ cho phép bên thứ ba truy cập tất cả các tài nguyên được liên kết với một id cụ thể. Đầu tiên, URL mang id phiên. Nếu bạn liên kết đến một trang web bên ngoài, URL bao gồm id phiên có thể được lưu trữ trong nhật ký liên kết giới thiệu của trang web bên ngoài. Thứ hai, một kẻ tấn công tích cực hơn có thể nghe lưu lượng mạng của bạn. Nếu nó không được mã hóa, id phiên sẽ chạy trong văn bản thuần trên mạng. Giải pháp ở đây là triển khai SSL trên máy chủ của bạn và làm cho nó bắt buộc đối với người dùng.

Điều này đặt ra câu hỏi, làm thế nào để bạn có ID phiên nhưng không thể truy cập tập lệnh?

Bất kể, bạn sẽ cần đặt ID phiên và sau đó bắt đầu ... sau đó truy cập dữ liệu.

session_id($whatever_id_you_have); 
session_start(); 
echo $_SESSION['somekey']; 
+6

+1 Chỉ có câu trả lời này nói cách lấy dữ liệu phiên sử dụng session_id. –

+1

Khi session.use_strict_mode được đặt thành 1 hoặc true, bạn không thể sử dụng session_id ($ sid) để đặt id phiên cho phiên hiện tại. http://php.net/manual/en/function.session-id.php –

2

var_dump($_SESSION); sẽ hiển thị cho bạn nội dung của phiên hiện tại, sau đó bạn có thể truy cập các giá trị giống như bạn làm trên một mảng bình thường.

+0

nhưng bây giờ tôi không thể chỉnh sửa tập lệnh và chỉ có id phiên. vì vậy làm thế nào để có được phiên varialbes –

1

Bạn có thể kiểm tra tất cả các giá trị phiên sử dụng này ..

print_r($_SESSION);