"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैजिक कोट्स अक्षम होने पर भी PHP में POST डेटा स्वतः-एस्केप क्यों हो रहा है?

मैजिक कोट्स अक्षम होने पर भी PHP में POST डेटा स्वतः-एस्केप क्यों हो रहा है?

2024-11-20 को प्रकाशित
ब्राउज़ करें:532

Why is POST Data Auto-Escaping in PHP Even When Magic Quotes are Disabled?

अक्षम जादू उद्धरण के साथ PHP में रहस्यमय ऑटो-एस्केपिंग पोस्ट डेटा का अनावरण

PHP में POST डेटा के साथ काम करते समय, विशेष रूप से एक के भीतर वर्डप्रेस वातावरण में, जादुई उद्धरण बंद होने के बावजूद अप्रत्याशित ऑटो-एस्केपिंग व्यवहार का सामना करना संभव है। यह पेचीदा मुद्दा तब उठता है जब POST डेटा स्वचालित रूप से निकल जाता है, भले ही जादुई उद्धरण कथित तौर पर अक्षम कर दिए गए हों (get_magic_quotes_gpc() 0 लौटाता है)।

वर्डप्रेस का प्रभाव

गहराई से जानने पर इस मुद्दे में, यह स्पष्ट हो जाता है कि वर्डप्रेस इस ऑटो-एस्केपिंग तंत्र को ट्रिगर करने में महत्वपूर्ण भूमिका निभाता है। जब वर्डप्रेस को आपके एप्लिकेशन की आरंभीकरण प्रक्रिया के हिस्से के रूप में बूटस्ट्रैप किया जाता है, तो इसका कोड PHP के जादुई उद्धरणों के प्राकृतिक व्यवहार में हस्तक्षेप करता है। सिंगल कोट्स (') से बच रहा है। यह व्यवहार तब भी विस्तारित होता है जब जादुई उद्धरण php.ini में अक्षम होते हैं। वर्डप्रेस कोर ट्रैक सिस्टम (टिकट 18322)। यह समस्या अनुरोध डेटा के गलत प्रबंधन से संबंधित है, जो अवांछित पलायन को ट्रिगर करता है।

समाधान

सौभाग्य से, इस स्वत: भागने की दुविधा को हल करने के लिए एक समाधान उपलब्ध है . वर्डप्रेस कोडेक्स किसी भी ऑपरेशन को करने से पहले POST डेटा को "अन-एस्केप" करने के लिए Stripslashes_dep() फ़ंक्शन का उपयोग करने की अनुशंसा करता है। इस फ़ंक्शन को नियोजित करके, आप वर्डप्रेस के ऑटो-एस्केपिंग को प्रभावी ढंग से ओवरराइड कर सकते हैं और डेटा को उसके मूल प्रारूप में पुनः प्राप्त कर सकते हैं।

इस समाधान को लागू करने के लिए, अपनी PHP स्क्रिप्ट में निम्नलिखित कोड जोड़ें:

$_GET = array_map('स्ट्रिपस्लैश_डीप', $_GET); $_POST = array_map('स्ट्रिपस्लैश_डीप', $_POST); $_COOKIE = array_map('स्ट्रिप्सलैश_डीप', $_COOKIE); $_SERVER = array_map('स्ट्रिप्सलैश_डीप', $_SERVER); $_REQUEST = array_map('stripslashes_dep', $_REQUEST);

यह कोड सभी सुपरग्लोबल्स से स्लैश को हटा देता है, यह सुनिश्चित करता है कि PHP में एक्सेस करने पर POST डेटा स्वचालित रूप से बच नहीं जाता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3