काल्पनिक सबमिट php. एचटीएमएल फॉर्म: पीएचपी फॉर्म - उसी पेज पर एक अनुरोध भेजें। PHP के साथ परेशानी से कैसे बचें _SELF

मैंने यह सोचने में काफी समय बिताया कि इस लेख को क्या शीर्षक दिया जाए और इससे बेहतर कुछ नहीं मिल सका। यह एकमात्र शीर्षक है जो कम से कम किसी तरह कही गई बात के सार को दर्शाता है। ईमानदारी से कहूं तो, मुझे नहीं पता कि इसे सही तरीके से क्या कहा जाता है, इसलिए मैंने लेख को उसी तरह नाम दिया जैसे मैंने इस विषय पर एक खोज इंजन में कम से कम कुछ जानकारी खोजने की कोशिश की थी।

एक साइट पर, मुझे एक फॉर्म में दो सबमिट बटन का उपयोग करने की आवश्यकता थी, जो बटन दबाए जाने पर निर्भर करते हुए, भरे हुए डेटा को विभिन्न PHP "हैंडलर" को भेज देगा। Google ने मुझे कुछ भी उचित उत्तर नहीं दिया, जाहिर तौर पर मैंने इसे सही तरीके से नहीं पूछा था, इसलिए मुझे इसे स्वयं लेकर आना पड़ा।

इसलिए मैंने इसे आपके विचारार्थ प्रस्तुत किया है।

समस्या का सार

इसे स्वयं लागू करने के बाद, मुझे अभी भी कई समाधान मिले जो नियमित बटनों के उपयोग पर आधारित थे जिनसे जेएस को जोड़ा गया था।

मैंने अपनी योजना लगभग उसी तरह लागू की, लेकिन मानक सबमिट प्रकार का उपयोग किया। सब कुछ काम कर रहा है और मेरी राय में मेरा समाधान तार्किक रूप से अधिक सही है।

यह समाधान मुफ़्त होस्टिंग और यदि आप पेशेवर होस्टिंग चुनते हैं, दोनों पर समान रूप से अच्छा काम करेगा। यह विधि पूरी तरह से क्लाइंट साइड पर लागू की गई है और इससे सर्वर धीमा नहीं होना चाहिए।

यह समझना आसान बनाने के लिए कि मैं क्या चाहता हूं और यह कैसे काम करता है, यहां एक वास्तव में काम करने वाला उदाहरण है, एक फॉर्म के रूप में जिसमें 2 सबमिट हैं जो विभिन्न पृष्ठों पर डेटा भेजते हैं।

PHP के बारे में सबसे अच्छी चीजों में से एक यह है कि यह HTML फॉर्म के साथ कैसे काम करती है। यहां मुख्य बात यह है कि प्रत्येक फॉर्म तत्व स्वचालित रूप से आपके PHP प्रोग्राम के लिए उपलब्ध हो जाता है। PHP में फॉर्म का उपयोग करने के बारे में विस्तृत जानकारी के लिए, अनुभाग पढ़ें। यहां एक उदाहरण HTML फॉर्म दिया गया है:

उदाहरण #1 सबसे सरल HTML फॉर्म

आपका नाम:

आपकी उम्र:

इस फॉर्म में कुछ खास नहीं है. यह बिना किसी विशेष टैग के एक नियमित HTML फॉर्म है। जब उपयोगकर्ता फॉर्म भरता है और सबमिट बटन पर क्लिक करता है, तो Action.php पेज पर कॉल किया जाएगा। इस फ़ाइल में कुछ ऐसा हो सकता है:

उदाहरण #2 फॉर्म डेटा प्रदर्शित करना

नमस्ते, ।
आप बूढ़े हैं।

इस प्रोग्राम का उदाहरण आउटपुट:

नमस्ते, सेर्गेई। आपकी उम्र 30 साल है.

यदि आप htmlspecialchars() और के साथ कोड के टुकड़ों को ध्यान में नहीं रखते हैं (इंट), इस कोड का संचालन सिद्धांत सरल और समझने योग्य होना चाहिए। htmlspecialchars() यह सुनिश्चित करता है कि "विशेष" HTML वर्ण ठीक से एन्कोड किए गए हैं ताकि दुर्भावनापूर्ण HTML या जावास्क्रिप्ट आपके पेज में न डाला जाए। आयु फ़ील्ड, जिसे हम जानते हैं कि एक संख्या होनी चाहिए, हम बस एक पूर्णांक में परिवर्तित कर सकते हैं, जो स्वचालित रूप से अवांछित वर्णों से छुटकारा दिलाएगा। PHP फ़िल्टर एक्सटेंशन का उपयोग करके स्वचालित रूप से भी ऐसा कर सकता है। $_POST["name"] और $_POST["age"] वेरिएबल आपके लिए PHP द्वारा स्वचालित रूप से सेट किए जाते हैं। पहले हम $_SERVER सुपरग्लोबल वेरिएबल का उपयोग करते थे, लेकिन यहां हम $_POST सुपरग्लोबल वेरिएबल का भी उपयोग करते हैं, जिसमें सभी POST डेटा शामिल हैं। नोटिस जो भेजने की विधिहमारे फॉर्म का (विधि) POST है। यदि हमने विधि का प्रयोग किया पाना, तो हमारी फॉर्म की जानकारी सुपरग्लोबल वेरिएबल $_GET में होगी। वैकल्पिक रूप से, यदि डेटा स्रोत कोई मायने नहीं रखता तो आप $_REQUEST वेरिएबल का उपयोग कर सकते हैं। इस वेरिएबल में GET, POST, COOKIE डेटा का मिश्रण होता है।

15 साल पहले

HTTP विनिर्देश के अनुसार, जब आप सर्वर छोर पर किसी चीज़ की स्थिति को बदलने के लिए फ़ॉर्म का उपयोग कर रहे हों तो आपको POST विधि का उपयोग करना चाहिए। उदाहरण के लिए, यदि किसी पृष्ठ में उपयोगकर्ताओं को अपनी टिप्पणियाँ जोड़ने की अनुमति देने के लिए एक फ़ॉर्म है, जैसे कि यहां पृष्ठ पर, फ़ॉर्म को POST का उपयोग करना चाहिए। यदि आप किसी पृष्ठ पर "पुनः लोड करें" या "ताज़ा करें" पर क्लिक करते हैं, जिस पर आप POST के माध्यम से पहुंचे हैं, तो यह लगभग हमेशा एक त्रुटि है - आपको एक ही टिप्पणी दो बार पोस्ट नहीं करनी चाहिए - यही कारण है कि ये पृष्ठ बुकमार्क या कैश्ड नहीं हैं।

आपको GET विधि का उपयोग तब करना चाहिए जब आपका फॉर्म सर्वर से कुछ हटा रहा हो और वास्तव में कुछ भी नहीं बदल रहा हो। उदाहरण के लिए, एक खोज इंजन के लिए फॉर्म में GET का उपयोग करना चाहिए, क्योंकि किसी वेब साइट पर खोज करने से ऐसा कुछ भी नहीं बदलना चाहिए जिसकी ग्राहक को परवाह हो, और खोज-इंजन क्वेरी के परिणामों को बुकमार्क करना या कैश करना उतना ही उपयोगी है जितना कि बुकमार्क करना या कैश करना। एक स्थिर HTML पृष्ठ.

2 वर्ष पहले

स्पष्ट करने लायक:

POST GET से अधिक सुरक्षित नहीं है.

GET बनाम POST चुनने के कारणों में विभिन्न कारक शामिल हैं जैसे अनुरोध का इरादा (क्या आप जानकारी "सबमिट" कर रहे हैं?), अनुरोध का आकार (URL कितनी देर तक हो सकता है इसकी सीमाएं हैं, और GET पैरामीटर भेजे जाते हैं) यूआरएल), और आप कितनी आसानी से कार्रवाई को साझा करना चाहते हैं - उदाहरण के लिए, Google खोजें GET हैं क्योंकि यह केवल यूआरएल साझा करके खोज क्वेरी को कॉपी करना और किसी और के साथ साझा करना आसान बनाता है।

यहां सुरक्षा केवल एक विचारणीय है क्योंकि पोस्ट की तुलना में GET को साझा करना आसान है। उदाहरण: आप नहीं चाहते कि पासवर्ड GET द्वारा भेजा जाए, क्योंकि उपयोगकर्ता परिणामी URL साझा कर सकता है और अनजाने में अपना पासवर्ड उजागर कर सकता है।

हालाँकि, यदि आप नेटवर्क कनेक्शन की सुरक्षा के लिए टीएलएस/एसएसएल तैनात नहीं करते हैं, तो एक अच्छी तरह से तैनात दुर्भावनापूर्ण व्यक्ति द्वारा जीईटी और पोस्ट को इंटरसेप्ट करना समान रूप से आसान है।

HTTP (आमतौर पर पोर्ट 80) पर भेजे गए सभी फॉर्म असुरक्षित होते हैं, और आज (2017), किसी सार्वजनिक वेबसाइट के लिए HTTPS (जो मूल रूप से HTTP + ट्रांसपोर्ट लेयर सिक्योरिटी है) का उपयोग न करने के कई अच्छे कारण नहीं हैं।

एक बोनस के रूप में, यदि आप टीएलएस का उपयोग करते हैं तो आप अपने उपयोगकर्ताओं को आपके ट्रैफ़िक में कोड (एडी) डालने का जोखिम कम कर देते हैं जो आपके द्वारा वहां नहीं डाला गया था।

POST और GET विधियों का उपयोग मुख्य रूप से बलों से पैरामीटर स्थानांतरित करने के लिए किया जाता है। POST और GET विधियों के बीच मुख्य अंतर सूचना स्थानांतरित करने का तरीका है। GET विधि में, पैरामीटर एड्रेस बार (URL) के माध्यम से पारित किए जाते हैं, अर्थात। HTTP अनुरोध शीर्षलेख में, जबकि POST विधि में पैरामीटर HTTP अनुरोध के मुख्य भाग के माध्यम से प्रेषित होते हैं और पता बार में प्रतिबिंबित नहीं होते हैं।

1. बटन - टैग

टैग एक वेब पेज पर बटन बनाता है और इसकी क्रिया टैग का उपयोग करके प्राप्त परिणाम के समान होती है (प्रकार = "बटन | रीसेट | सबमिट" पैरामीटर के साथ)। इस टैग के विपरीत, यह बटन बनाने के लिए उन्नत विकल्प प्रदान करता है। उदाहरण के लिए, ऐसे बटन पर आप छवियों सहित कोई भी HTML तत्व रख सकते हैं। शैलियों का उपयोग करके, आप फ़ॉन्ट, पृष्ठभूमि रंग, आकार और अन्य मापदंडों को बदलकर बटन की उपस्थिति को परिभाषित कर सकते हैं।

सिद्धांत रूप में, टैग तत्व द्वारा निर्धारित प्रपत्र के अंदर स्थित होना चाहिए। हालाँकि, ब्राउज़र कोई त्रुटि संदेश प्रदर्शित नहीं करते हैं और यदि टैग स्वयं सामने आता है तो उसके साथ सही ढंग से काम करते हैं। हालाँकि, यदि आपको बटन पर क्लिक करने का परिणाम सर्वर पर भेजने की आवश्यकता है, तो इसे एक कंटेनर में रखा जाना चाहिए। समापन टैग आवश्यक है.

विकल्प:

अक्षम - तत्व की पहुंच और संशोधन को रोकता है।

प्रकार - बटन प्रकार

मूल्य - बटन का मूल्य जो सर्वर पर भेजा जाएगा या स्प्रिट का उपयोग करके पढ़ा जाएगा।

पाठ के साथ बटन

पैरामीटर अक्षम बटन की पहुंच और संशोधन को रोकता है। इस स्थिति में, यह ग्रे रंग में प्रदर्शित होता है और उपयोगकर्ता द्वारा इसे सक्रिय नहीं किया जा सकता है। इसके अतिरिक्त, ऐसा बटन टैब कुंजी दबाने, माउस का उपयोग करने या अन्यथा फोकस प्राप्त नहीं कर सकता है। हालाँकि, इस बटन स्थिति को स्क्रिप्ट के माध्यम से बदला जा सकता है।

सक्रिय बटन निष्क्रिय बटन

पैरामीटर प्रकार बटन के प्रकार को निर्दिष्ट करता है, जो प्रपत्र पर उसका व्यवहार निर्धारित करता है। विभिन्न प्रकार के बटन दिखने में किसी भी तरह से भिन्न नहीं होते हैं, लेकिन प्रत्येक बटन का अपना कार्य होता है। डिफ़ॉल्ट मान: बटन.

तर्क:

बटन - नियमित बटन।

रीसेट - दर्ज किए गए फॉर्म डेटा को साफ़ करने और मानों को उनकी मूल स्थिति में वापस करने के लिए एक बटन।

सबमिट - सर्वर पर फॉर्म डेटा भेजने के लिए बटन।

फॉर्म साफ़ करें फॉर्म सबमिट करें

पैरामीटर VALUE बटन का मान निर्दिष्ट करता है जो सर्वर पर भेजा जाएगा। एक "नाम = मान" जोड़ी सर्वर पर भेजी जाती है, जहां नाम टैग के नाम पैरामीटर द्वारा निर्दिष्ट किया जाता है, और मान मान पैरामीटर द्वारा निर्दिष्ट किया जाता है। अर्थ या तो बटन पर मौजूद पाठ से मेल खा सकता है या स्वतंत्र हो सकता है। वैल्यू पैरामीटर का उपयोग स्क्रिप्ट के माध्यम से डेटा तक पहुंचने के लिए भी किया जाता है।

फार्म जमा करें

1.1. बटन (इनपुट प्रकार=बटन) 1.2. छवि वाला बटन (इनपुट प्रकार=छवि) चित्र वाला बटन

छवियों वाले बटन सबमिट बटन के समान ही कार्य करते हैं, लेकिन वे एक चित्र का प्रतिनिधित्व करते हैं। ऐसा करने के लिए, type=image और src='image.gif' सेट करें।

जब उपयोगकर्ता छवि पर कहीं भी क्लिक करता है, तो संबंधित फॉर्म दो अतिरिक्त चर - सब_x और सब_y के साथ सर्वर पर सबमिट किया जाएगा। उनमें छवि पर क्लिक करने वाले उपयोगकर्ता के निर्देशांक होते हैं। अनुभवी प्रोग्रामर देख सकते हैं कि ब्राउज़र द्वारा भेजे गए वेरिएबल नामों में वास्तव में अंडरस्कोर के बजाय एक बिंदु होता है, लेकिन PHP स्वचालित रूप से बिंदु को अंडरस्कोर में बदल देता है।

1.3. फॉर्म सबमिट बटन (इनपुट प्रकार=सबमिट)

फॉर्म को स्क्रिप्ट में सबमिट करने का कार्य करता है। फ़ॉर्म सबमिट करने के लिए बटन बनाते समय, आपको 2 विशेषताएँ निर्दिष्ट करनी होंगी: type='submit' और value='बटन टेक्स्ट" . Атрибут name необходим, если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки.!}

किसी PHP स्क्रिप्ट की आवश्यकता नहीं है.

1.4. क्रिया विकल्प 2 का चयन करने के लिए बटनों की एक श्रृंखला (सबमिट करें)। फॉर्म रीसेट बटन (रीसेट)

जब आप रीसेट बटन पर क्लिक करते हैं, तो सभी फॉर्म तत्व उस स्थिति पर सेट हो जाएंगे जो डिफ़ॉल्ट विशेषताओं में निर्दिष्ट किया गया था, और फॉर्म सबमिट नहीं किया जाएगा।

किसी PHP स्क्रिप्ट की आवश्यकता नहीं है.

3. चेकबॉक्स

चेकबॉक्स उपयोगकर्ता को कई विकल्प प्रस्तुत करते हैं, और मनमाने ढंग से चयन (कोई नहीं, एक या अधिक) की अनुमति देते हैं।

सफ़ेद
हरा
नीला
लाल
काला

// बटनों का पहला सेट
// बटनों का दूसरा सेट
// बटनों का तीसरा सेट

5. पाठ क्षेत्र (पाठ)

आकार आकार और अधिकतम लम्बाई वर्णों की अधिकतम अनुमत लंबाई का एक नियमित टेक्स्ट फ़ील्ड बनाते समय, प्रकार विशेषता मान टेक्स्ट पर ले जाती है। यदि मान पैरामीटर निर्दिष्ट है, तो फ़ील्ड चर में निर्दिष्ट मान प्रदर्शित करेगा। फ़ील्ड बनाते समय, फ़ील्ड नाम निर्दिष्ट करना न भूलें, क्योंकि... यह विशेषता आवश्यक है.

6. पासवर्ड फ़ील्ड

बिल्कुल टेक्स्ट फ़ील्ड के समान, सिवाय इसके कि उपयोगकर्ता द्वारा टाइप किए गए अक्षर स्क्रीन पर प्रदर्शित नहीं होंगे।

7. छिपा हुआ पाठ क्षेत्र (छिपा हुआ)

आपको कुछ सेवा जानकारी को पृष्ठ पर प्रदर्शित किए बिना स्क्रिप्ट में भेजने की अनुमति देता है।

8. ड्रॉपडाउन सूची (चयन करें)

टैग एक ड्रॉप-डाउन या विस्तारित सूची है, और एक या अधिक पंक्तियों को एक ही समय में चुना जा सकता है। लेकिन मान अंतिम चयनित बटन पर भेज दिया जाएगा।

सूची युग्मित टैग से शुरू होती है। टैग आपको सूची की सामग्री को परिभाषित करने की अनुमति देते हैं, और मान पैरामीटर स्ट्रिंग के मान को परिभाषित करता है। यदि चयनित पैरामीटर टैग में निर्दिष्ट है, तो प्रारंभ में पंक्ति का चयन किया जाएगा। आकार पैरामीटर निर्दिष्ट करता है कि सूची कितनी पंक्तियों पर कब्जा करेगी। यदि आकार 1 है, तो सूची एक ड्रॉपडाउन होगी। यदि एकाधिक विशेषता निर्दिष्ट है, तो सूची से एकाधिक तत्वों का चयन किया जा सकता है। लेकिन इस योजना का व्यावहारिक रूप से उपयोग नहीं किया जाता है, और आकार = 1 के साथ इसका कोई मतलब नहीं है।

सफ़ेद हरा नीला लाल काला

यदि आपको पूर्वानुमानित अनुक्रम के साथ एक ड्रॉप-डाउन बनाने की आवश्यकता है। उदाहरण के लिए, 2000 से 2050 तक के वर्षों की एक सूची। फिर निम्नलिखित तकनीक का उपयोग किया जाता है।

9. मल्टीलाइन टेक्स्ट इनपुट फ़ील्ड (टेक्स्टेरिया)

एक बहु-पंक्ति पाठ इनपुट फ़ील्ड आपको न केवल एक पंक्ति, बल्कि कई पंक्तियाँ एक साथ भेजने की अनुमति देता है। यदि आवश्यक हो, तो आप केवल पढ़ने योग्य विशेषता निर्दिष्ट कर सकते हैं, जो पाठ को संपादित करने, हटाने और बदलने पर रोक लगाती है, अर्थात। पाठ केवल पढ़ने के लिए होगा. यदि टेक्स्ट को प्रारंभ में मल्टी-लाइन इनपुट फ़ील्ड में प्रदर्शित करना आवश्यक है, तो इसे टैग के बीच रखा जाना चाहिए।

एक रैप पैरामीटर है - सेटिंग लाइन रैपिंग। संभावित मान:

बंद - लाइन रैपिंग अक्षम करता है;

वर्चुअल - लाइन ब्रेक दिखाता है, लेकिन टेक्स्ट को वैसे ही भेजता है जैसे उसे दर्ज किया गया था;

भौतिक - लाइन ब्रेक को उनके मूल रूप में छोड़ दिया जाता है।

डिफ़ॉल्ट रूप से, टैग एक रिक्त फ़ील्ड बनाता है जो 20 वर्ण चौड़ा होता है और इसमें 2 पंक्तियाँ होती हैं।


मल्टी-लाइन टेक्स्ट फ़ील्ड को HTML फ़ॉर्मेटिंग (टैग का उपयोग करके लाइन रैपिंग) का अनुपालन करने के लिए
या
), फिर nl2br() फ़ंक्शन का उपयोग करें:

मूल रूप से डाली गई पंक्ति 1, मूल रूप से डाली गई पंक्ति 2, मूल रूप से डाली गई पंक्ति 3

10. फ़ाइलें अपलोड करने के लिए बटन (ब्राउज़ करें)

सर्वर पर फ़ाइलें अपलोड करने को कार्यान्वित करने का कार्य करता है। टेक्स्ट फ़ील्ड बनाते समय, आपको फ़ील्ड का प्रकार "फ़ाइल" भी निर्दिष्ट करना होगा।

फ़ाइल अपलोड करें:

ब्राउज़र को सर्वर से संचार करने के तरीके

HTTP प्रोटोकॉल द्वारा कुछ विधियाँ प्रदान की गई हैं। यह महत्वपूर्ण जानकारी है. कोई और रास्ता नहीं है. व्यवहार में, दो का उपयोग किया जाता है: GET तब होता है जब डेटा एड्रेस बार में स्थानांतरित किया जाता है, उदाहरण के लिए, जब उपयोगकर्ता किसी लिंक पर क्लिक करता है। पोस्ट - जब वह फॉर्म पर एक बटन क्लिक करता है।

विधि प्राप्त करें

GET विधि का उपयोग करके डेटा स्थानांतरित करने के लिए, आपको HTML पेज पर एक फॉर्म बनाने की आवश्यकता नहीं है (कोई भी आपको GET विधि का उपयोग करके अनुरोधों के लिए फॉर्म का उपयोग करने से मना नहीं करता है - लेकिन यह मूर्खता है) - बस दस्तावेज़ के साथ एक लिंक जोड़ें एक क्वेरी स्ट्रिंग जो एक वेरिएबल = मान जोड़े की तरह दिख सकती है, उसे एक एम्परसेंड & का उपयोग करके संयोजित किया जाता है और स्ट्रिंग को एक प्रश्न चिह्न का उपयोग करके पृष्ठ URL में जोड़ा जाता है? "

लेकिन यदि आपको केवल एक वेरिएबल पास करने की आवश्यकता है तो आपको key=value जोड़े का उपयोग करने की आवश्यकता नहीं है; ऐसा करने के लिए, आपको प्रश्न चिह्न के बाद वेरिएबल का VALUE (नाम नहीं) लिखना होगा।

इस तरह से पैरामीटर पास करने का लाभ यह है कि जो क्लाइंट POST विधि (उदाहरण के लिए, खोज इंजन) का उपयोग नहीं कर सकते हैं, वे अभी भी लिंक का अनुसरण करके पैरामीटर को स्क्रिप्ट में पास कर सकते हैं और सामग्री प्राप्त कर सकते हैं।

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

पैरामीटर पारित करके सार्वजनिक पृष्ठों तक पहुँचने के लिए (बढ़ी हुई कार्यक्षमता)

सूचना का स्थानांतरण जो सुरक्षा स्तर को प्रभावित नहीं करता है

पारित मापदंडों के साथ संरक्षित पृष्ठों तक पहुँचने के लिए

सुरक्षा स्तर को प्रभावित करने वाली सूचना प्रसारित करना

ऐसी जानकारी संचारित करने के लिए जिसे उपयोगकर्ता द्वारा संशोधित नहीं किया जा सकता (कुछ SQL क्वेरी का पाठ प्रसारित करते हैं।

पोस्ट विधि

आप केवल HTML पेज पर एक फॉर्म का उपयोग करके POST विधि का उपयोग करके डेटा सबमिट कर सकते हैं। POST और GET के बीच मुख्य अंतर यह है कि डेटा रिक्वेस्ट हेडर में नहीं बल्कि बॉडी में प्रसारित होता है, इसलिए उपयोगकर्ता इसे नहीं देख पाता है। इसे केवल स्वरूप बदलकर ही संशोधित किया जा सकता है।

फ़ायदा :

POST प्रपत्रों का उपयोग करने वाले अनुरोधों के लिए बेहतर सुरक्षा और कार्यक्षमता।

गलती :

कम उपलब्धता.

आपको इसका उपयोग किस लिए करना चाहिए:

बड़ी मात्रा में जानकारी (पाठ, फ़ाइलें..) प्रसारित करने के लिए;

किसी भी महत्वपूर्ण जानकारी को प्रसारित करने के लिए;

पहुंच को प्रतिबंधित करने के लिए (उदाहरण के लिए, नेविगेशन के लिए केवल फॉर्म का उपयोग करें - एक विकल्प जो सभी रोबोट प्रोग्राम या सामग्री हथियाने वालों के लिए उपलब्ध नहीं है)।

किस चीज़ का उपयोग नहीं किया जाना चाहिए:

कोई प्रतिबंध नहीं।

POST विधि का उपयोग करके फ़ाइलें अपलोड करना

PHP किसी भी ब्राउज़र का उपयोग करके डाउनलोड की गई फ़ाइल को स्वीकार करने में सक्षम है। इससे टेक्स्ट और बाइनरी दोनों फ़ाइलें अपलोड करना संभव हो जाता है। PHP प्रमाणीकरण और फ़ाइल सिस्टम फ़ंक्शंस के साथ संयुक्त, आपके पास इस पर पूरा नियंत्रण है कि किसे फ़ाइलें अपलोड करने की अनुमति है और अपलोड होने के बाद फ़ाइल के साथ क्या करना है।

फ़ाइल अपलोड पृष्ठ को एक विशेष फॉर्म का उपयोग करके कार्यान्वित किया जा सकता है जो कुछ इस तरह दिखता है:

//फ़ाइलें अपलोड करने के लिए फ़ॉर्म यह फ़ाइल भेजें:

उपरोक्त उदाहरण में, "_URL_" को PHP स्क्रिप्ट के लिंक से बदलने की आवश्यकता है। छिपा हुआ फ़ील्ड MAX_FILE_SIZE (मान बाइट्स में निर्दिष्ट होना चाहिए) फ़ाइल चयन फ़ील्ड से पहले होना चाहिए, और इसका मान स्वीकृत होने के लिए अधिकतम अनुमत फ़ाइल आकार है। आपको यह भी सुनिश्चित करना चाहिए कि आप प्रपत्र विशेषताओं में enctype='multipart/form-data' निर्दिष्ट करें, अन्यथा फ़ाइलें सर्वर पर अपलोड नहीं की जाएंगी।

ध्यान

MAX_FILE_SIZE विकल्प एक ब्राउज़र अनुशंसा है, भले ही PHP भी इस स्थिति की जाँच करेगा। ब्राउज़र की ओर से इस सीमा को दरकिनार करना काफी आसान है, इसलिए आपको सभी बड़ी फ़ाइलों को ब्लॉक करने के लिए इस सुविधा पर भरोसा नहीं करना चाहिए। हालाँकि, PHP की अधिकतम आकार सीमा को बायपास करने का कोई तरीका नहीं है। आपको वैसे भी MAX_FILE_SIZE फॉर्म का एक वैरिएबल जोड़ना चाहिए, क्योंकि यह उपयोगकर्ताओं को बड़ी फ़ाइलों को स्थानांतरित करते समय उत्सुकता से प्रतीक्षा करने से रोकता है, केवल यह पता लगाने के लिए कि फ़ाइल बहुत बड़ी है और स्थानांतरण वास्तव में विफल हो गया है।

अनुरोध विधि को कैसे परिभाषित करें?

सीधे:

Getenv('REQUEST_METHOD');

GET या POST लौटाएगा.

कौन सी विधि का प्रयोग करना चाहिए?

यदि फॉर्म का उपयोग कुछ जानकारी का अनुरोध करने के लिए किया जाता है, उदाहरण के लिए खोज के दौरान, तो इसे GET विधि का उपयोग करके भेजा जाना चाहिए। पेज को अपडेट करने में सक्षम होने के लिए, आप इसे बुकमार्क कर सकते हैं या किसी मित्र को लिंक भेज सकते हैं।

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

किसी भी स्थिति में, POST को संसाधित करने के बाद, आपको हमेशा ब्राउज़र को किसी पृष्ठ पर रीडायरेक्ट करना चाहिए, भले ही वही हो, लेकिन फॉर्म डेटा के बिना, ताकि जब पृष्ठ ताज़ा हो, तो उन्हें दोबारा रिकॉर्ड न किया जाए।

GET और POST विधियों का उपयोग करके PHP प्रोग्राम के मुख्य भाग से सीधे डेटा को दूसरी फ़ाइल में कैसे स्थानांतरित करें? POST और GET विधियों का एक साथ उपयोग करके डेटा भेजने और सर्वर से प्रतिक्रिया प्राप्त करने का एक उदाहरण।

यह आलेख PHP _SELF वेरिएबल का उपयोग करने के बारे में विस्तार से बताता है।

PHP _SELF वेरिएबल क्या है?

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

आइए कुछ उदाहरण देखें.

इको $_सर्वर["PHP_SELF"];

1) मान लें कि आपकी php फ़ाइल निम्नलिखित पते पर स्थित है:

Http://www.yourserver.com/form-action.php

इस स्थिति में, PHP _SELF वैरिएबल में शामिल होंगे:

"/form-action.php"

2) मान लें कि आपकी php फ़ाइल इस पते पर स्थित है:

Http://www.yourserver.com/dir1/form-action.php

PHP_SELF होगा:

"/dir1/form-action.php"

प्रपत्र की क्रिया विशेषता में PHP _SELF। उसकी वहां आवश्यकता क्यों थी?

आमतौर पर PHP _SELF वैरिएबल का उपयोग फॉर्म टैग के एक्शन एट्रिब्यूट में किया जाता है। एक्शन विशेषता उस पते को निर्दिष्ट करती है जिस पर पुष्टि के बाद फॉर्म की सामग्री भेजी जाएगी (उपयोगकर्ता टाइप = "सबमिट" वाले बटन पर क्लिक करता है)। नियम के मुताबिक, यह वही पेज है जहां से फॉर्म छोड़ा गया था।

हालाँकि, यदि आप फॉर्म द्वारा संदर्भित फ़ाइल का नाम बदलते हैं, तो आपको एक्शन विशेषता में फ़ाइल का नाम बदलना होगा, अन्यथा फॉर्म काम नहीं करेगा।

PHP _SELF वैरिएबल आपको अनावश्यक सुधारों से बचाएगा, क्योंकि पेज का पता फ़ाइल नाम के आधार पर स्वचालित रूप से उत्पन्न हो जाएगा।

मान लीजिए कि आपके पास form-action.php नामक एक फॉर्म फ़ाइल है और आप चाहते हैं कि पुष्टि के बाद फॉर्म को उसी फ़ाइल में सबमिट किया जाए। आमतौर पर वे इस तरह लिखते हैं:

लेकिन आप form-action.php के बजाय PHP _SELF वेरिएबल का उपयोग कर सकते हैं। इस स्थिति में कोड इस प्रकार दिखेगा: