अब तक जो उत्तर मैंने देखा है, वे PHP के संदर्भ में हैं, जब वास्तव में यह भाषा विशिष्ट नहीं है। अब तक दिए गए उत्तरों PHP के दृष्टिकोण से हैं और जानकारी का उपयोग करने के लिए उपयोग की जाने वाली विधियों को एक भाषा से अगले भाषा में भिन्न होता है, लेकिन जिस प्रारूप में डेटा यूआरएल (क्वेरी स्ट्रिंग के रूप में जाना जाता है) में रहता है वही (उदा: पृष्ठ.ext? key1 = मान & key2 = मान & ...)।
मैं अपने तकनीकी पृष्ठभूमि या ज्ञान पता नहीं है, तो कृपया मुझे माफ कर ...
एक वेब पेज वापस वेब सर्वर से डेटा प्रदान करने के लिए दो अलग अलग तरीकों रहे हैं। इन्हें पोस्ट या जीईटी विधियों के रूप में जाना जाता है। यहां तक कि दूसरों का एक गुच्छा भी है, लेकिन सामान्य उपयोगकर्ता से निपटने के दौरान उनमें से कोई भी किसी भी प्रकार के वेब डिज़ाइन में उपयोग नहीं किया जाना चाहिए।POST विधि सर्वर पर अदृश्य रूप से भेजी जाती है और 'अपलोडिंग' डेटा के लिए होती है, जबकि जीईटी विधि यूआरएल में क्वेरी स्ट्रिंग के रूप में उपयोगकर्ता को दिखाई देती है और केवल शाब्दिक रूप से 'जानकारी' प्राप्त करने के लिए होती है।
सभी साइटें अंगूठे के इस नियम का पालन नहीं करती हैं, लेकिन इसके कारण क्यों हो सकते हैं। उदाहरण के लिए, एक साइट प्रॉक्सी सर्वर या आपके ब्राउज़र द्वारा कैशिंग के आसपास विशेष रूप से पोस्ट का उपयोग कर सकती है, या क्योंकि वे डबल बाइट भाषा का उपयोग करते हैं और एन्कोडिंग रूपांतरण की वजह से जीईटी करने की कोशिश करते समय समस्याएं पैदा कर सकते हैं।
दो विधियों और जब उन्हें इस्तेमाल करने के बारे में कुछ संसाधनों ...
http://www.cs.tut.fi/~jkorpela/forms/methods.html http://weblogs.asp.net/mschwarz/archive/2006/12/04/post-vs-get.aspx http://en.wikipedia.org/wiki/Query_string
अब एक सख्ती से पीएचपी स्थिति से, वहाँ अब आप प्राप्त करने के लिए उपयोग कर सकते हैं 3 अलग सरणियों जानकारी एक वेबपेज सर्वर पर वापस भेज दिया है। आप अपने निपटान करने के लिए है ...
- $ _POST [ 'कीनेम'], एक POST पद्धति से केवल जानकारी
- $ _GET [ 'कीनेम'], केवल जानकारी किसी GET से हड़पने के लिए आकर्षित करने के लिए विधि
- $ _REQUEST ['keyname'], आपको पोस्ट, GET, और सबमिट की गई किसी भी कुकी जानकारी को पकड़ने की अनुमति देने के लिए। एक कैचल का क्रमबद्ध करें, खासतौर से ऐसे मामलों में जहां आप नहीं जानते कि डेटा सबमिट करने के लिए कोई पृष्ठ किस विधि का उपयोग कर रहा हो।
$ _REQUEST विधि के साथ सीधे जाकर मैला मत बनो। जब तक आपके पास $ _REQUEST चर के लिए ऊपर वर्णित कोई मामला नहीं है, तो इसका उपयोग न करें। जब आप सुरक्षा की बात करते हैं तो आप 'इन सभी को अस्वीकार कर सकते हैं और केवल x, y, z' दृष्टिकोण का उपयोग करना चाहते हैं। केवल उस डेटा की तलाश करें जिसे आप जानते हैं कि आपकी अपनी साइट भेज रही है, केवल उन संयोजनों की तलाश करें जिन्हें आप उम्मीद करेंगे, और इसका उपयोग करने से पहले सभी जानकारी साफ़ करें। उदाहरण के लिए ..
- उपर्युक्त विधियों के माध्यम से पारित किसी भी चीज़ पर कभी भी eval() न करें। मैंने इसे कभी नहीं देखा है, लेकिन इसका मतलब यह नहीं है कि लोगों ने कोशिश नहीं की है या नहीं किया है।
- कभी जानकारी सीधे डेटाबेस के साथ उन्हें सफाई के बिना (अनुसंधान SQL इंजेक्शन हमले में अगर आप उन लोगों के साथ परिचित नहीं हैं), का उपयोग
यह दूर नहीं अंत सब कर रहा है हो सकता है-सभी पीएचपी सुरक्षा के लिए , लेकिन हम इसके लिए यहां नहीं हैं। यदि आप लाइन के साथ और जानना चाहते हैं, तो यह SO के लिए एक और सवाल है।
उम्मीद है कि यह किसी भी प्रश्न पूछने में मदद करता है और स्वतंत्र महसूस करता है।
यह गलत है। "?" सर्वर के लिए "बस एक और चरित्र" नहीं है। सर्वर यूआरएल को "?" पर विभाजित करता है (यदि कोई है तो)। पहले का हिस्सा अनुरोधित फ़ाइल है, और बाद में "क्वेरी स्ट्रिंग" है, जिसे CGI को QUERY_STRING पर्यावरण चर के रूप में प्रस्तुत किया गया है। –
मुझे शायद यह कहना चाहिए कि सर्वर * सामान्य रूप से * विशेष रूप से इसका इलाज करने की अपेक्षा नहीं की जाती है। PHP (और अधिकांश अन्य वेब ढांचे) के मामले में कुछ उपचार प्रदान किए जाते हैं, जैसा कि मैंने चर्चा की थी। सवाल कहीं भी CGI निर्दिष्ट नहीं करता है। – Edmund
यह सर्वर के लिए विशेष नहीं हो सकता है, लेकिन यह PHP के बजाय HTTP मानक का हिस्सा है। –