_GET

2011-10-11 9 views
39

में यूआरएल पैरामीटर का अधिकतम आकार मैं आरईएसटी का उपयोग कर एक PHP सर्वर तक पहुंच रहा हूं: सभी डेटा यूआरएल पैरामीटर के रूप में जीईटी अनुरोध में पास हो जाते हैं। पैरामीटर में से एक क्वेरी_स्ट्रिंग में सर्वर पर आता है, लेकिन यह _GET वैश्विक में नहीं है। लेकिन पैरामीटर को छोटा करना (कटऑफ लगभग 512 अक्षर लगता है) इसे इसके माध्यम से देता है।_GET

मान लीजिए कि मैंने समस्या का सही ढंग से निदान किया है, क्या इस अधिकतम आकार को बदलने का कोई तरीका है? मुझे दस्तावेज में कोई स्पष्टीकरण नहीं मिला है, न कि इस सीमा का उल्लेख भी। यह डेबियन निचोड़/अपाचे 2.2.16/PHP 5.3.3 पर है।

+0

जीईटी अनुरोध के लिए अधिकतम लंबाई आम तौर पर लगभग 2k होती है। –

+1

धन्यवाद, लेकिन मुझे जो जानने की आवश्यकता है वह PHP में एक व्यक्तिगत जीईटी पैरामीटर की अधिकतम लंबाई है। – alexfernandez

उत्तर

65

ठीक है, ऐसा लगता है कि पीएचपी के कुछ संस्करणों प्राप्त पैरामीटर की लंबाई की एक सीमा है:

कृपया ध्यान दें suhosin पैच स्थापित है कि PHP सेटअप प्राप्त मापदंडों के लिए 512 वर्ण की एक डिफ़ॉल्ट सीमा होगी । हालांकि बुरा अभ्यास, (आईई सहित) सबसे ब्राउज़रों, अप करने के लिए 2000 के आसपास वर्ण URL का समर्थन करता है, जबकि अपाचे 8000

की डिफ़ॉल्ट suhosin के साथ लंबे समय मानकों के लिए समर्थन जोड़ने के लिए है, php.ini

में suhosin.get.max_value_length = <limit> जोड़ने

स्रोत: http://www.php.net/manual/en/reserved.variables.get.php#101469

+1

यह काम करता है, धन्यवाद! – alexfernandez

+1

ओउच, कुछ महत्वपूर्ण डेटा पर इसके द्वारा चुरा लिया गया! धन्यवाद, यह मेरी समस्या तय है। – artfulrobot

+0

मैं आपको गले लगा सकता हूं। 800+ char '' crypt'' क्वेरी पैरा को सेज पे से वापस फॉर्म एकीकरण का उपयोग करके वापस लौटाया जा रहा है, जिसे हमारे चेकआउट_प्रोसेस हैंडलर द्वारा प्राप्त नहीं किया गया था, जिससे इसे असुरक्षित संदेश पेश किया गया था "कार्ड अधिकृत नहीं किया जा सका!"। एफवाईआई ने मुझे 'php_value suhosin.get.max_value_length 2000'' जोड़ने के लिए पाया। Htaccess काम नहीं किया था, मुझे' 'suhosin.get.max_value_length = 2000'' को' '[suhosin]' 'php के खंड में जोड़ना पड़ा। परिवर्तन को प्रभावी बनाने के लिए आईएनआई (और httpd को पुनरारंभ करें)। अचानक मेरे लंबे क्रिप्ट क्वेरी परम प्राप्त, संसाधित, और कार्ड भुगतान फिर से काम किया जाता है। – Neek

0

देखें What is the maximum length of a URL in different browsers?

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

+0

यूआरएल ठीक है, और क्वेरी स्ट्रिंग में सबकुछ है। यह सिर्फ एक पैरामीटर है (512 वर्णों से अधिक) जो _GET में दिखाई नहीं देता है। – alexfernandez

+0

@alexinblue शायद इस चर के मूल्य में कुछ विशेष प्रतीक हैं। क्या आप मूल्य के लिए 'urlencode() 'का उपयोग करते हैं? – Karolis

+0

@ गियोफ्रॉय ने कहा है, मैं आरईएसटी का उपयोग कर रहा हूं: एक जीईटी अनुरोध काफी सुविधाजनक है और मैं इसे बदलने के लिए तैयार नहीं हूं। लिंक्ड आलेख IE8 में लगभग 2000 - 4000 वर्णों की व्यावहारिक सीमा के बारे में बोलता है; पुराने ब्राउज़र एक समस्या नहीं हैं। – alexfernandez

संबंधित मुद्दे