2012-06-22 24 views
9

उपयोगकर्ता द्वारा PHP ब्राउज़र संचालित साइट पर लॉग इन करने का सबसे अच्छा तरीका क्या है जब तक कि वह अपने ब्राउज़र को बंद नहीं कर लेता?PHP सत्र या कुकी

पहला और सबसे लोकप्रिय तरीका $_SESSION के साथ जाना है। दूसरा setcookie फ़ंक्शन के तीसरे तर्क के रूप में शून्य पास करना है: setcookie(name, value, 0, domain);

+5

सत्र वास्तव में सिड –

+1

@AlvinWong मैं जानता हूँ कि स्टोर करने के लिए कुकी का उपयोग करता है, लेकिन मेरे सवाल का क्या पीएचपी – treng

उत्तर

18

पीएचपी सत्र वास्तव में कुकी द्वारा सिड भंडार के रूप में (जाहिर है आप चाहें तो ऐसा सिड स्थापित करने के लिए अन्य तरीकों का उपयोग कर सकते हैं), वहाँ बहुत ज्यादा नहीं फर्क जब बस उन्हें का उपयोग कर किया जाएगा।

मुख्य अंतर सुरक्षा है, क्योंकि यदि आप सीधे कुकीज़ का उपयोग करते हैं तो ग्राहक स्वयं देख सकते हैं और/या उन्हें स्वयं संपादित कर सकते हैं, लेकिन सत्र के लिए डेटा सर्वर पर संग्रहीत किया जाता है ताकि क्लाइंट सीधे पहुंच न सके।

तो यदि डेटा केवल उस सत्र के लिए रहता है, तो मैं सत्र का उपयोग करना पसंद करता हूं।

साइड-नोट: यदि आप लोड को संतुलित करने के लिए एकाधिक सर्वर का उपयोग करते हैं तो आपको बेहद सावधान रहना चाहिए क्योंकि सर्वर डेटा डिफ़ॉल्ट रूप से सर्वर पर स्थानीय रूप से संग्रहीत किया जाता है। कई सर्वरों में सत्र डेटा साझा करना संभव है लेकिन यह beyond the scope of this question है। वैकल्पिक रूप से, आप डेटाबेस में डेटा स्टोर कर सकते हैं।

+2

में उपयोग करने के लिए बेहतर है है आप अभी भी एकाधिक सर्वर env में सत्र का उपयोग कर सकते हैं। memcache में सत्र संग्रहीत करके (http://php.net/manual/en/memcached.sessions.php) – Rizon

3

इस उद्देश्य के लिए एक सत्र का अर्थ है, इसलिए मैं इसके साथ जाऊंगा।

3

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

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

http://php.about.com/od/learnphp/qt/session_cookie.htm

1

मैं $ _SESSION का उपयोग करना आसान होगा। : पी वैसे भी जैसा ऊपर बताया गया है, अपने मामले का फैसला करें .. यदि ब्राउज़र बंद होने के बाद भी आपको उपयोगकर्ता को लॉग इन करने की आवश्यकता है, लेकिन ठीक से। यह आपके लिए एक सुरक्षा खतरा हो सकता है! अन्य सत्र का उपयोग करें।

4

मेरा सुझाव है कि आप PHP सत्रों के लिए जाएं। यह आसान है और आपको अपने आप कुकीज़ से निपटने की ज़रूरत नहीं है।

नीचे दिए गए कोड को वास्तव में नष्ट करने के लिए कोड है, PHP मैनुअल में दिए गए example से प्रतिलिपि बनाई गई है।

// Initialize the session. 
// If you are using session_name("something"), don't forget it now! 
session_start(); 

// Unset all of the session variables. 
$_SESSION = array(); 

// If it's desired to kill the session, also delete the session cookie. 
// Note: This will destroy the session, and not just the session data! 
if (ini_get("session.use_cookies")) { 
    $params = session_get_cookie_params(); 
    setcookie(session_name(), '', time() - 42000, 
     $params["path"], $params["domain"], 
     $params["secure"], $params["httponly"] 
    ); 
} 

// Finally, destroy the session. 
session_destroy(); 

अपने प्रश्न के बारे में:

क्या उपयोगकर्ता में लॉग इन किया है जब तक वह अपने ब्राउज़र बंद कर देता रखने के लिए उपयोग करने के लिए बेहतर है?

उपयोगकर्ता ने ब्राउज़र बंद कर दिया है यह निर्धारित करने का कोई असफल तरीका नहीं है। एक दृष्टिकोण सर्वर पर छोटे AJAX अनुरोधों को लगातार जारी रखना है। जब एक विस्तृत अवधि के लिए कोई अनुरोध नहीं देखा जाता है, तो सत्र को नष्ट कर दें।

एक और तरीका डोम विंडो अनलोड के लिए सुनना है और सत्र को नष्ट करने के लिए सर्वर से अनुरोध भेजना है।

3

आप का उपयोग करना चाहिए $ _SESSION

यदि कुकी सक्षम हैं, तो एक कुकी पीएचपी सत्र पहचानकर्ता के लिए वैसे भी उपयोग किया जाएगा क्योंकि। तो एक और कुकी लिखना इष्टतम नहीं है।

सत्र के बजाए कुकी का उपयोग करने का एकमात्र कारण यह है कि यदि आप लोड संतुलन का ख्याल रखना चाहते हैं। तो यदि आपके पास 2 सर्वर हैं और उनमें से एक विफल रहता है, तो उस सर्वर पर सत्र खो जाएगा। अब लॉग इन उपयोगकर्ता (जिसने सर्वर 1 पर सत्र किया था) को फिर से लॉगिन करने के लिए कहा जाएगा। लेकिन अगर उसके पास एक कुकी थी, तो उसे फिर से लॉगिन करने के लिए कहा नहीं जाएगा।

2

कुकी प्रत्येक डोमेन के लिए सीमित है आप 20 कुकीज़ और अधिकतम आकार सेट कर सकते हैं में से प्रत्येक 4KB है