पहले मैं अद्वितीय हैश के साथ अतिरिक्त कुकी "यादृच्छिक" बना रहा था, जिसे डेटाबेस में संग्रहीत किया गया था, जो उपयोगकर्ता आईडी में मैप किया गया था।देशी सत्रों का उपयोग करते समय PHP के तहत "मुझे याद रखें" बनाने का सबसे अच्छा तरीका क्या है?
यदि उपयोगकर्ता की ऐसी कुकी थी - वेबसाइट ने डेटाबेस में इसका मूल्य ढूंढने का प्रयास किया, और यदि यह पाया गया कि सत्र स्थापित हो रहा था।
बाद में, नई परियोजना विकसित करने के बाद मैंने सोचा कि शायद यह अनूठा हैश उत्पन्न करने के लिए बहुत सुरक्षित नहीं है, और एक ऑपरेशन (उपयोगकर्ता पहचान) के लिए दो कुकीज़ (मूल "PHPSESSID" + my "rememberme") रखना बहुत अधिक है ।
शायद वैश्विक सत्र जीवनकाल स्थापित करने का कोई तरीका नहीं है, लेकिन अलग-अलग उपयोगकर्ता सत्रों के लिए इसे अलग-अलग सेट अप करने के लिए ... या शायद उपयोगकर्ता सत्र में उपयोगकर्ता सत्र को रखना बेहतर है, उपयोगकर्ता आईडी में मैप किया गया है?
UPDATE 1 मैंने सोचा कि अगर यह करने के लिए "मुझे याद रखें" बटन है, हम एक और तरीका जा सकते हैं बहुत मुश्किल है - "नहीं मेरे कंप्यूटर बटन" बनाने के लिए। आइडिया php.ini (उदाहरण के लिए) में एक सप्ताह के लिए डिफ़ॉल्ट cookie_lifetime सेट करना है, और यदि उपयोगकर्ता इस चेकबॉक्स को चेक करता है - हम session_set_cookie_params फ़ंक्शन का उपयोग करके कुकी_लिफ़टाइम शून्य में सेट करेंगे।
तो, 1 सवाल यह है कि - होगा session_set_cookie_params अन्य उपयोगकर्ताओं कुकीज़ को प्रभावित (दस्तावेज में यह कहा जाता है, कि session_set_cookie_params विकल्प जब तक php प्रक्रिया को क्रियान्वित किया जाएगा असर नहीं होगा)
2 डी सवाल है कि session_set_cookie_params अगर वैश्विक प्रभावित कर रहा है सेटिंग्स, सत्र पुनर्जन्म उपयोगकर्ताओं को प्रभावित करेगा, जो एक लंबे जीवन कुकी रखना नहीं चाहते हैं?
अद्यतन 2: [प्रश्न 1 जवाब]
बस session_set_cookie_params समारोह का परीक्षण किया। मैं शून्य session_set_cookie_params का उपयोग करते हुए एक स्क्रिप्ट, कि सत्र कुकी जीवनकाल सेट लिखा था और उसके बाद 30 सेकंड के लिए क्रियान्वित:
if ($_GET['test']) {
session_set_cookie_params (0);
while (true) {
sleep(1);
}
}
session_start();
तो, पहले ब्राउज़र में मैं सिर्फ परीक्षण = 1 पैरामीटर, बस उस के बाद से इस स्क्रिप्ट शुरू कर दिया (जबकि यह स्क्रिप्ट निष्पादित हो रही थी) मैंने दूसरे स्क्रिप्ट में पैरामीटर के बिना इस स्क्रिप्ट को शुरू किया। जवाब नहीं है - दूसरा ब्राउज़र की कुकी प्रभावित नहीं हुई थी। यह जीवन भर था कि php.ini
अद्यतन 3 में निर्दिष्ट किया गया था,:, [प्रश्न 2 जवाब] फिर, मैं अगर उत्थान सत्र कुकी जीवन को प्रभावित करता है की जाँच करने के की कोशिश की है कि session_set_cookie_params द्वारा स्थापित किया गया था।
हां, यह प्रभावित करता है। अगर मैं अनुकूलित जीवन भर के साथ सत्र कुकी सेट, कि,) session_set_cookie_params द्वारा स्थापित किया गया था, और उसके बाद session_regenerate_id (फोन, कुकी जीवनकाल, php.ini
में सेट करना होगा लेकिन अगर हम सेट session_set_cookie_params (0) session_regenerate_id कॉल करने से पहले() , हमारी कुकी में सही जीवनकाल होगा।
तो, यह है! वह तो आसान था! 8)
धन्यवाद, महिलाओं और सज्जनो!
मैं डॉन इसे प्राप्त नहीं करें। सत्र जीवनकाल इस तथ्य को प्रभावित नहीं करता है कि ब्राउजर को बहाल करने के बाद उपयोगकर्ता को एक नया PHPSESSID मिल जाएगा। कृपया अपनी सुरक्षा चिंताओं को विस्तृत करें। – Teson
मैं उपयोगकर्ता की पहचान के लिए एक कुकी रखना चाहता हूं। मुझे यकीन नहीं है कि मेरी कस्टम कुकी "यादृच्छिक" सुरक्षित है, अधिक से अधिक, मैं इसके बारे में सोचना नहीं चाहता - एक ऑपरेशन के लिए दो कुकीज़ बहुत अनावश्यक है। – avasin
एक सीधा तरीका एक या दो कुकीज़ का उपयोग मूल्य 'SHA1 ($ userid। $ Salt)' और सार्वजनिक 'उपयोगकर्ता नाम' के साथ करना है। – Stan