PHP सत्र कैसे काम करते हैं? ("वे कैसे उपयोग किए जाते हैं?")


127

/tmp/सर्वर, और नाम पर सत्र फ़ाइलों को आमतौर पर संग्रहीत किया जाता है sess_{session_id}। मैं सामग्री को देख रहा हूं और यह पता नहीं लगा सकता कि वे वास्तव में कैसे काम करते हैं।

चर नाम और फ़ाइल से सामग्री प्राप्त करना आसान है। लेकिन PHP कैसे जानता है कि किस सत्र का संबंध किससे है?

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

तो यह कैसे काम करता है?


पर एक नजर डालें stackoverflow.com/questions/523703/...
adatapost

जवाबों:


202

सामान्य स्थिति में:

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

सत्र फ़ाइलों में डेटा की सामग्री है $_SESSION, क्रमबद्ध (यानी, एक स्ट्रिंग के रूप में प्रतिनिधित्व - क्रमबद्ध जैसे एक समारोह के साथ ) ; और $_SESSIONसरणी को पॉप्युलेट करने के लिए PHP द्वारा फ़ाइल लोड किए जाने पर अन-सीरीज़ की जाती है ।


कभी-कभी, सत्र आईडी को कुकी में संग्रहीत नहीं किया जाता है, लेकिन URL में भी भेजा जाता है, लेकिन यह आजकल काफी दुर्लभ है।


अधिक जानकारी के लिए, आप मैनुअल के सत्र हैंडलिंग अनुभाग पर एक नज़र डाल सकते हैं , जो कुछ उपयोगी सुझाव देता है।

मिसाल के तौर पर, पासिंग सेशन आईडी के बारे में एक पेज है , जो बताता है कि कैसे सेशन आईडी को पेज से पेज पर, कुकी का उपयोग करके या URL में - और किस कॉन्फ़िगरेशन विकल्प को प्रभावित करते हैं।


5
एक मोबाइल डिवाइस (एक देशी ऐप से) सामान्य रूप से सत्र कैसे संभालता है? एक सत्र आईडी संग्रहीत करना? या यह OAuth के साथ आता है?
एडम वेट

13

PHP सत्र कैसे काम करता है

  • सबसे पहले PHP a86b10aeb5cd56434f8691799b1d9360एक व्यक्तिगत सत्र के लिए एक 16-बाइट लंबी अद्वितीय पहचानकर्ता संख्या (32 हेक्साडेसिमल वर्णों की एक स्ट्रिंग के रूप में संग्रहीत) बनाता है ।

  • PHPSESSID कुकी उस नंबर को सहेजने के लिए उपयोगकर्ताओं के ब्राउज़र में वह विशिष्ट पहचान संख्या पास करती है।

  • Sess_ उपसर्ग (यानी sess_a86b10aeb5cd56434f8691799b1d9360।) के साथ विशिष्ट पहचान संख्या के समान नाम वाले सर्वर पर एक नई फ़ाइल बनाई जाती है ।

  • ब्राउज़र उस कुकी को प्रत्येक अनुरोध के साथ सर्वर को भेजता है।

  • यदि PHP को PHPSESSID कुकी (प्रत्येक अनुरोध पर) से विशिष्ट पहचान संख्या मिलती है, तो PHP अस्थायी निर्देशिका में खोज करती है और उस नंबर की तुलना फ़ाइल नाम से करती है। यदि दोनों समान हैं, तो यह मौजूदा सत्र को पुनः प्राप्त करता है, अन्यथा यह उस उपयोगकर्ता के लिए एक नया सत्र बनाता है।

उपयोगकर्ता द्वारा ब्राउज़र बंद करने या साइट छोड़ने पर एक सत्र नष्ट हो जाता है। सत्र समय समाप्त होने की पूर्व निर्धारित अवधि के बाद सर्वर भी सत्र को समाप्त कर देता है। ये सरल तंत्र चरण हैं जो PHP सत्र को संभालने के लिए उपयोग कर रहे हैं। मुझे उम्मीद है कि PHP SESSION कैसे काम कर रहा है यह समझने में आपकी मदद करता है।

अधिक जानकारी के लिए यह लेख देखें। PHP सत्र कैसे काम करता है


लेकिन अगर मैं कह रहा हूँ, एक निश्चित साइट में लॉग इन किया गया (एक सत्र में: उर्फ), और एक नया टैब खोलें mysite.com/cart। मैं अपने "हैलो जो डो, 5 संदेश, यहां आपकी खरीदारी कार्ट सूची ..." उर्फ ​​सत्र की जानकारी भी प्राप्त करूंगा। - लेकिन इस रिक्त टैब के बारे में ब्राउज़र GET-Request के साथ कोई सत्र-आईडी क्यों भेजेगा? त्वरित अपडेट: आह, जवाब मिला: +)
फ्रैंक नॉक

क्या मैं यह पूछ सकता हूं कि सत्र आईडी सुरक्षा कैसे प्रदान कर सकती है? उदाहरण के लिए यदि उपयोगकर्ता inlogged, और अपनी प्रोफ़ाइल पर पहुंचता है, तो अलग-अलग उपयोगकर्ता के प्रोफ़ाइल तक पहुँचने के लिए url पैरामीटर को बदलने से, सत्र आईडी इसे कैसे रोक सकता है?
एंड्रयूबॉ

4

सत्र आईडी वास्तव में यादृच्छिक है, और कॉन्फ़िगरेशन के आधार पर एक कुकी या URL में पारित किया जाता है। आपने पहले ही कुछ URL में इस PHPSESSID = xxxx को देखा होगा, उस नाम से एक कुकी भी है।


2

PHP में सत्र session_start () फ़ंक्शन का उपयोग करके शुरू किया जाता है। सेटकुकी () फ़ंक्शन की तरह, सत्र_स्टार्ट () फ़ंक्शन को पृष्ठ पर रिक्त लाइनों सहित किसी भी HTML से पहले आना चाहिए। यह इस तरह दिखेगा: <?php session_start( );?><html><head> ....... आदि session_start () फ़ंक्शन एक यादृच्छिक सत्र आईडी बनाता है और इसे उपयोगकर्ता के कंप्यूटर पर कुकी में संग्रहीत करता है (यह केवल सत्र की जानकारी है जो वास्तव में क्लाइंट साइड पर संग्रहीत है। ) कुकी का डिफ़ॉल्ट नाम PHPSESSID है, हालांकि इसे सर्वर पर PHP कॉन्फ़िगरेशन फ़ाइलों में बदला जा सकता है (ज्यादातर होस्टिंग कंपनियां इसे अकेले छोड़ देंगी, हालांकि।) PHP कोड में सत्र आईडी का संदर्भ देने के लिए, आप इसलिए संदर्भ लेंगे। $ PHPSESSID चर (यह एक कुकी नाम है? याद रखें कि कुकीज़ से?)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.