2009-08-08 13 views
6

में सूची मैं localhost.So से सत्र सूची प्राप्त करना चाहते हैं, मैं

session_start(); 
print_r($_SESSION); 

वर्तमान का उपयोग व्यक्ति two.one एक और पीसी से है और पिछले एक pc.But होस्ट किया गया है है लिखा था केवल होस्ट किए गए पीसी सत्र को दिखाया गया। असल में मैं सभी सत्र उपयोगकर्ता सूची प्राप्त करना चाहता हूं।

+0

समान प्रश्न और asnwers यहाँ उपलब्ध: http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php –

+0

मैं सहमत यहाँ एक ठोस उदाहरण है उत्तरदाताओं की सामान्य मानसिकता। ऐसा लगता है कि आप जो खोज रहे हैं वह एक अलग तकनीक है। क्या मैं वेब सॉकेट का सुझाव दे सकता हूं। –

उत्तर

4

सत्र एक दूसरे से अलग हैं। एक उपयोगकर्ता के सत्र में किसी अन्य उपयोगकर्ता के सत्र तक पहुंच नहीं होती है। परिवर्तनीय $_SESSION केवल वर्तमान उपयोगकर्ता के सत्र का संदर्भ देता है।

मुझे नहीं लगता कि एक अलग उपयोगकर्ता के सत्र तक पहुंचने का कोई तरीका है, यह पता लगाने के अलावा कि सत्र फ़ाइलों को डिस्क पर शारीरिक रूप से संग्रहीत किया जाता है और उन्हें हाथ से पार्स किया जाता है। ध्यान दें कि यह वास्तव में कुछ नहीं है जो आप करना चाहते हैं।

+0

सभी सत्र कैसे प्राप्त करें? someway? –

1

मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं, लेकिन मुझे लगता है कि आप किसी अन्य उपयोगकर्ता से एक और सत्र प्राप्त करना चाहते हैं। यदि यह मामला है, तो मैं इसकी अनुशंसा नहीं करता और यह वास्तव में संभव नहीं है। सत्र प्रत्येक ब्राउज़र सत्र के लिए व्यक्तिगत होते हैं (जब तक कुकीज़ के माध्यम से अन्यथा निर्दिष्ट नहीं किया जाता है)।

यदि आप अपने सत्र से अपने कंप्यूटर से किसी अन्य कंप्यूटर से पुनर्प्राप्त करने के लिए कह रहे हैं, तो फिर, डिफ़ॉल्ट सत्र व्यवहार वास्तव में ऐसा करने के लिए नहीं किया जाता है। आपको अपने स्वयं के सत्र प्रबंधक को लागू करने की आवश्यकता होगी जो शायद डेटाबेस का उपयोग करता है और ट्रैक करता है कि कौन सा सत्र है जिसके लिए उपयोगकर्ता (उपयोगकर्ता आईडी शायद) है ताकि यह इसे किसी अन्य कंप्यूटर पर लोड कर सके। मैं इसकी सिफारिश नहीं करता क्योंकि आप मोम की एक और पूरी गेंद में जा रहे हैं, प्रति कहते हैं।

यदि आप उपयोगकर्ता लॉगिन और कंप्यूटर पर डेटा का ट्रैक रखने की कोशिश कर रहे हैं, तो मैं उपयोगकर्ता सेटिंग्स तालिका का उपयोग करने की अनुशंसा करता हूं। यहां आप सत्र की हैंडलर को संशोधित किए बिना सेटिंग्स को ट्रैक कर सकते हैं और उन्हें प्रत्येक सत्र या प्रत्येक पृष्ठ लोड भी लोड कर सकते हैं।

यदि आपके शीर्षक से आप वर्तमान में सक्रिय सत्रों की एक सूची प्राप्त करना चाहते हैं, तो बस तालिका में प्रत्येक उपयोगकर्ता का अंतिम हिट टाइम रिकॉर्ड करें और उस डेटा को प्रदर्शित करें, जब आप सत्र निष्क्रिय मानते हैं।

12

यह आसानी से निम्न कोड के साथ किया जा सकता है:

<?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>'; 

?> 

सुनिश्चित करें कि आप क्या कर रहे हैं (या अनुमति) में जोखिम यह समझते हैं।

+3

क्या होगा यदि सत्र फ़ाइलें बहु-स्तर पर हैं: http://www.php.net/manual/en/session.configuration.php#ini.session।सेव-पथ – jondinham

+4

@ पॉलिंह: सच है ... फिर आपको 'रिकर्सिव डायरेक्टरी इटरेटर' एसपीएल इटरेटर या इसी तरह का उपयोग करके फ़ाइलों को दोबारा मैप करना होगा। =) –

0

session_save_path से "ses_ *" फ़ाइलों को प्राप्त करना एक विकल्प है, लेकिन यदि ये सत्र फ़ाइलें बहु-स्तर पर हैं: http://www.php.net/manual/en/session.configuration.php#ini.session.save-path समस्याएं उत्पन्न हो सकती हैं।

सबसे अच्छा हर session_start(), एक mysql तालिका जो पहले कॉलम SESSION_ID है (है अद्यतन) के बाद, और दूसरा $ _SESSION

1

के धारावाहिक डेटा यह जब तक आप पहचानकर्ता पता है संभव है जिस सत्र को आप संभालना चाहते हैं।

<?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

प्रश्न पूछने के तरीके के बारे में महान स्पष्टीकरण। – David

संबंधित मुद्दे