2009-08-08 31 views
6

Tôi muốn để có được danh sách phiên từ localhost.So, tôi đã viết

session_start(); 
print_r($_SESSION); 

hiện truy cập người là two.one là từ một máy tính khác và người cuối cùng được lưu trữ pc.But trên được hiển thị chỉ được lưu trữ trên máy tính session.Actually tôi muốn nhận được tất cả các phiên danh sách người dùng.

+0

câu hỏi và asnwers tương tự có sẵn ở đây: http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php –

+0

Tôi đồng ý với tư duy chung của người trả lời. Nghe có vẻ như những gì bạn đang tìm kiếm là một công nghệ khác. Tôi có thể đề nghị ổ cắm web. –

Trả lời

4

Phiên được phân tách với nhau. Phiên của một người dùng không có quyền truy cập vào phiên của người dùng khác. Biến số $_SESSION chỉ tham chiếu phiên của người dùng hiện tại.

Tôi không nghĩ rằng có một cách để truy cập vào phiên của người dùng khác với việc tìm ra nơi tệp phiên được lưu trữ trên thực tế trên đĩa và phân tích chúng theo cách thủ công. LƯU Ý R THNG NÀY KHÔNG PHẢI LÀ GÌ BẠN MUỐN LÀM.

+0

cách thực hiện để có được tất cả các phiên? cách khác? –

1

Tôi không chắc chắn những gì bạn đang yêu cầu, nhưng tôi nghĩ bạn đang tìm kiếm một phiên khác từ người dùng khác. Nếu đây là trường hợp, sau đó tôi sẽ không khuyên bạn nên nó và nó không thực sự có thể. Phiên là cá nhân cho mỗi phiên trình duyệt (trừ khi được quy định khác thông qua cookie).

Nếu bạn đang yêu cầu truy xuất phiên của mình từ người dùng của riêng bạn từ máy tính khác, thì một lần nữa, hành vi phiên mặc định không thực sự được thực hiện để thực hiện việc này. Bạn sẽ cần phải triển khai trình quản lý phiên của riêng bạn có thể sử dụng cơ sở dữ liệu và theo dõi phiên nào là người dùng nào (có thể là id người dùng) để có thể tải nó trên máy tính khác. Tôi sẽ không khuyên bạn nên điều này, hoặc bởi vì bạn đang nhận được vào một quả bóng toàn bộ sáp, mỗi nói.

Nếu bạn đang cố gắng theo dõi dữ liệu trên thông tin đăng nhập của người dùng và máy tính, tôi khuyên bạn nên sử dụng bảng cài đặt người dùng. Tại đây bạn có thể theo dõi các cài đặt mà người dùng có và tải chúng mỗi phiên hoặc thậm chí mỗi lần tải trang mà không phải sửa đổi trình xử lý phiên.

Nếu từ tiêu đề bạn muốn nhận danh sách các phiên hiện đang hoạt động, thì chỉ cần ghi lại thời gian truy cập cuối cùng của từng người dùng trong bảng và hiển thị dữ liệu đó, có thời gian được đặt khi bạn xem phiên không hoạt động.

12

này có thể dễ dàng được thực hiện với đoạn mã sau:

<?php 

$sessions = array(); 

$path = realpath(session_save_path()); 
$files = array_diff(scandir($path), array('.', '..')); 

foreach ($files as $file) 
{ 
    $sessions[$file] = unserialize(file_get_contents($path . '/' . $file)); 
} 

echo '<pre>'; 
print_r($sessions); 
echo '</pre>'; 

?> 

Hãy chắc chắn rằng bạn hiểu những rủi ro trong làm (hoặc cho phép) này.

+3

điều gì sẽ xảy ra nếu tệp phiên ở nhiều cấp độ: http://www.php.net/manual/en/session.configuration.php#ini.session.save-path – jondinham

+4

@PaulDinh: True ... Sau đó, bạn sẽ cần phải ánh xạ các tệp đệ quy, có thể sử dụng trình lặp SPL 'RecursiveDirectoryIterator' hoặc tương tự. =) –

0

nhận các tệp "ses_ *" từ session_save_path là một tùy chọn, nhưng nếu các tệp phiên này ở mức đa cấp: http://www.php.net/manual/en/session.configuration.php#ini.session.save-path sự cố có thể phát sinh.

tốt nhất là sau mỗi session_start(), cập nhật một bảng mysql trong đó có cột đầu tiên được session_id(), và thứ hai là dữ liệu tuần tự của $ _SESSION

1

Điều này có thể miễn là bạn biết chính xác của phiên mà bạn muốn xử lý. Dưới đây là một ví dụ cụ thể:

<?php 
// Getting your own session id 
$currentSessionId = session_id(); 

// Closing your own session 
session_write_close(); 

// Switch to the session to handle 
// Here, it is assumed that you pulled the session ID from a storage 
session_id($sessionId); 
session_start(); 

// Do whatever you want with the session ... 

// Close the session once you finished to work with it 
session_write_close(); 

// Restoring your own session session 
session_id($currentSessionId); 
session_start(); 

// At this point, you're back in your own session 
+0

Giải thích tuyệt vời về cách thực hiện những gì câu hỏi yêu cầu. – David

Các vấn đề liên quan