कुकीज़ PHP में Arrays




cookies (5)

कुकी में सरणी को स्टोर करने का उचित तरीका कैसा है? PHP कोड उदाहरण में:

$number_ticket=2;
$info[7][5]=1;
$info[8][5]=1;

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


कुकी में सरणी मानों को संग्रहीत करने के लिए, पहले आपको उन्हें स्ट्रिंग में कनवर्ट करने की आवश्यकता है, इसलिए यहां कुछ विकल्प हैं।

जेएसओएन के रूप में कुकीज़ संग्रहीत करना

कोड संग्रहित करना

setcookie('your_cookie_name', json_encode($info), time()+3600);

कोड पढ़ना

$data = json_decode($_COOKIE['your_cookie_name'], true);

यदि आपको जावास्क्रिप्ट के साथ फ्रंट एंड में पढ़ने की कुकी की आवश्यकता है तो JSON भी अच्छा चयन कर सकता है।

असल में आप किसी भी encrypt_array_to_string decrypt_array_from_string उदाहरण के लिए आप पूर्णांक की सरणी के लिए explode / implode का भी उपयोग कर सकते हैं।

चेतावनी: serialize / unserialize का उपयोग न करें

PHP.net से

Do not pass untrusted user input to unserialize(). - कुकीज़ सहित HTTP द्वारा आने वाली कुछ भी अविश्वसनीय है!

सुरक्षा से संबंधित संदर्भ

वैकल्पिक समाधान के रूप में, आप सरणी को स्ट्रिंग में परिवर्तित किए बिना भी कर सकते हैं।

setcookie('my_array[0]', 'value1' , time()+3600);
setcookie('my_array[1]', 'value2' , time()+3600);
setcookie('my_array[2]', 'value3' , time()+3600);

और यदि आप $_COOKIE चर मुद्रित करेंगे, तो आप निम्न देखेंगे

echo '<pre>';
print_r( $_COOKIE );
die();
Array
(   
    [my_array] => Array
        (
            [0] => value1
            [1] => value2
            [2] => value3
        )

)

यह पीएचपी फीचर दस्तावेज है।

PHP.net से

Cookies names can be set as array names and will be available to your PHP scripts as arrays but separate cookies are stored on the user's system.


कुकीज़ पर serialize और unserialize का उपयोग एक सुरक्षा जोखिम है। उपयोगकर्ता (या हमलावर) कुकी डेटा को बदल सकते हैं, फिर जब आप इसे अनसुलझा करते हैं, तो यह आपके सर्वर पर PHP कोड चला सकता है। कुकी डेटा पर भरोसा नहीं किया जाना चाहिए। इसके बजाए JSON का प्रयोग करें!

PHP साइट से ...

अविश्वसनीय उपयोगकर्ता इनपुट को unserialize () पर पास न करें। ऑब्जेरियलाइजेशन के परिणामस्वरूप ऑब्जेक्ट इंस्टेंटेशन और ऑटोलोडिंग के कारण कोड लोड और निष्पादित किया जा सकता है, और एक दुर्भावनापूर्ण उपयोगकर्ता इसका शोषण करने में सक्षम हो सकता है। यदि आपको उपयोगकर्ता को क्रमबद्ध डेटा पास करने की आवश्यकता है तो JSON (json_decode () और json_encode () के माध्यम से एक सुरक्षित, मानक डेटा इंटरचेंज प्रारूप का उपयोग करें।


डेटा को क्रमबद्ध करें:

setcookie('cookie', serialize($info), time()+3600);

फिर डेटा को बेअसर करें:

$data = unserialize($_COOKIE['cookie']);

डेटा के बाद, $ जानकारी और $ डेटा में एक ही सामग्री होगी।


serialize() प्रयास करें। यह एक सरणी को एक स्ट्रिंग प्रारूप में परिवर्तित करता है, फिर आप इसे वापस सरणी में परिवर्तित करने के लिए unserialize() का उपयोग कर सकते हैं। वर्डप्रेस की तरह लिपियों का उपयोग एकाधिक मानों को एक डेटाबेस फ़ील्ड में सहेजने के लिए किया जाता है।

आप json_encode() का भी उपयोग कर सकते हैं क्योंकि रॉब ने कहा था, जो उपयोगी हो सकता है यदि आप जावास्क्रिप्ट में कुकी को पढ़ना चाहते हैं।





cookies