2009-08-21 10 views
10

मुझे निम्नलिखित कोड php.ini में मिला। इसका क्या मतलब है?PHP में "ईजीपीसीएस" का क्या अर्थ है?

और "PHP रजिस्ट्रार" - वह क्या है? variables_order (के हवाले से):

 
; This directive describes the order in which PHP registers GET, POST, Cookie, 
; Environment and Built-in variables (G, P, C, E & S respectively, often 
; referred to as EGPCS or GPC). Registration is done from left to right, newer 
; values override older values. 
variables_order = "EGPCS" 
+1

क्या आपने वास्तव में आपके द्वारा पोस्ट किए गए दस्तावेज़ को पढ़ा था? –

+0

@ सेन ब्राइट: हाँ, लेकिन मुझे नहीं पता कि PHP रजिस्टरों का उपयोग क्या है? क्या आपने देखा कि मेरे प्रश्न के नीचे ?? – coderex

+0

हां। और आपके द्वारा पोस्ट किए गए दस्तावेज़ में उत्तर ठीक है। –

उत्तर

24

निर्देश के बारे में मार्गदर्शन आप अधिक एक सा मदद कर सकता है

EGPCS का क्रम निर्धारित करता है (पर्यावरण, जाओ, डाक, कुकी, और सर्वर) परिवर्तनीय पार्सिंग। उदाहरण के लिए, variables_order करने के लिए "सपा" पर सेट है तो पीएचपी superglobals $_SERVER और $_POST निर्माण करेंगे, लेकिन नहीं बना $_ENV, $_GET, और $_COOKIE। "" पर सेट करना मतलब है कि कोई सुपरग्लोब सेट नहीं किया जाएगा।

यह भी ध्यान रखें (फिर हवाले से):

सामग्री और $_REQUEST के आदेश भी इस निर्देश से प्रभावित है।

मुझे लगता है इस विकल्प को कुछ समय पहले, जब रजिस्टर अभी भी कुछ एक ही पृष्ठ राज्यों के रूप में इस्तेमाल किया (के हवाले से) था और अधिक महत्वपूर्ण था:

पदावनत register_globals निर्देश पर है, तो (के रूप में हटाया PHP 6.0.0), तो variables_order भी ENV, GET, POST, कुकी और सर्वर चर के क्रम को कॉन्फ़िगर करता है वैश्विक दायरे में आबादी है। तो उदाहरण के लिए variables_order "EGPCS" पर सेट है, रजिस्टर सक्षम किया गया है, और दोनों $_GET['action'] और $_POST['action'] सेट कर रहे हैं, तो $action $_POST['action'] का मूल्य शामिल होंगे के रूप में पी हमारे उदाहरण के निर्देश मूल्य में जी के बाद आता है।

मुझे नहीं लगता कि मैं क्या जोड़ सकता हूं; क्या यह मदद मिली?
या यह ऐसा कुछ है जो आपको समस्या का कारण बनता है?

+0

@ पास्कल मार्टिन: क्षमा करें। :(, हमें इन चरों के लिए ऑर्डर सेट करने की आवश्यकता क्यों है। मुझे समझ में नहीं आता है? – coderex

+2

यदि आपके पास एक वैरिएबल है जो $ _GET और $ _COOKIE में पारित होता है, तो $ _GET, $ _POST, $ _COOKIE विलय करते समय, ... $ _REQUEST में, PHP को पता होना चाहिए कि उनमें से कौन सा पहले उपयोग किया जाना चाहिए ... और उनमें से कौन सा पहला ओवरराइड करेगा। इसका आज बहुत उपयोग नहीं किया जाता है (कम से कम, अगर हम इसका उपयोग नहीं करते हैं $ _REQUEST), लेकिन जब register_globals का उपयोग किया गया था, तो हमारे चर में सही मान सेट करने के लिए इस आदेश पर निर्भर होना असामान्य नहीं था।; आप $ _GET में 'एक्शन' और $ _COOKIe में एक और 'कार्रवाई' कर सकते हैं; लेकिन आपके पास $ _REQUEST में केवल एक ही हो सकता है: यह कौन सा होगा? ;-) –

+0

हाँ मुझे यह मिला !! धन्यवाद दोस्त !! :-) यह उत्तर वास्तव में मैं चाहता था :-)। सी अगली पोस्ट पर आप :) – coderex

1

यह उस क्रम को नियंत्रित करता है जिसमें वैश्विक चर $_GET, $_POST इत्यादि PHP द्वारा परिभाषित किए गए हैं। पत्र सिर्फ श्रेणियों के लिए खड़े हैं, उदाहरण के लिए, G$_GET के लिए। मुझे गंभीरता से संदेह है कि आप उस सेटिंग के साथ गड़बड़ करना चाहते हैं।

+0

ऑर्डर को नियंत्रित करने का मतलब है कि, register_global को चालू होने पर कॉलिंग वैरिएबल नामों को प्राथमिकताएं देना। उदाहरण के लिए, यदि $ _GET ['name'] और $ _POST ['name'] एक साथ मौजूद हैं, तो यह मान मान को $ नाम पर सेट करना महत्वपूर्ण है। –

5

ऊपर स्वीकृत उत्तर अच्छा है। लेकिन यहां ध्यान देने योग्य एक और महत्वपूर्ण बात यह है कि यदि इनमें से कोई भी ध्वज सेट नहीं है, तो स्क्रिप्ट चलने पर वह चर खाली होगा, यानी यदि चरबी_ऑर्डर "जीपीसीएस" पर सेट किया गया है तो $ _ENV चर हमेशा एक खाली सरणी होगी। इसे कठिन तरीके से मिला।

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