get and post Method in PHP – HTML Form से आने वाले Data को Process करने के लिए हमें मूल रूप से PHP के $_GET या $_POST Super Global Array को Use करना होता है। GET व POST दोनों दो अलग Methods हैं और दोनों दो अलग तरीकों से काम करते हैं। इसलिए सबसे पहले हम इन्हीं Methods के बारे में जानेंगे।
Methods
जैसाकि हमने पहले ही Discuss किया कि GET व POST दो ऐसे Methods हैं, जिनका प्रयोग करके एक Client Web Browser User द्वारा Specified Data को Processing के लिए Web Server पर Pass कर सकता है।
User द्वारा Specified Data किस तरीके से Web Server पर Send होगा, इस बात को हमें HTML Form के method Attribute में GET या POST Method को Specify करके बताना होता है।
हालांकि HTML में Methods के नाम Case Insensitive होते हैं, लेकिन फिर भी हमें इन्हें Capital Letters में ही लिखना चाहिए, क्योंकि कुछ Web Browsers इन्हें Capital Letters में ही Accept करते हैं।
जब हम GET Method Use करते हैं, तो GET Method Form के Data को एक URL के रूप में निम्नानुसार Encode करता हैः
/path/to/formfile.php?user=rajesh&password=pwd
GET Method के किसी Form के Data को इस तरीके से Encode करने से बनने वाले URL को Query String कहा जाता है। GET Method किसी भी Form के सभी Data को इसी तरह से Query String Format में Encode करके Web Server पर Send करता है।
जबकि POST Method को Use करने पर Form के सभी Parameters HTTP Request की Body में Pass होते हैं। इसलिए Form के Data किसी भी तरह से Encode नहीं होते।
GET व POST दोनों Methods को Use करने पर जो मुख्य अन्तर दिखाई देता है वह इनके URL में ही होता है। GET Method में Form के Data Web Browser के URL में दिखाई देते हैं, जबकि GET Method Form के Data को Encode करके URL के रूप में Web Server पर Pass करता है। इन Encoded URLs के User Bookmark कर सकता है। इसलिए Form के Data को इस तरीके से Web Server पर Pass करने पर Form के Data की कोई Security नहीं होती।
जबकि POST Method को Use करने पर Form का Data Request Message की Body में होता है, इसलिए तुलनात्मक रूप से Data ज्यादा सुरक्षित तरीके से Web Client से Web Server के बीच Travel करता है।
GET और POST Methods का सबसे महत्वपूर्ण अन्तर ये है कि GET Method से प्राप्त होने वाले Response Pages, Web Browser में Cache हो जाते हैं जबकि POST Method से प्राप्त होने वाले Response Pages, Web Browsers में Cache नहीं होते।
इसलिए GET Method को तब Use किया जाना चाहिए, जबकि Response Pages के Contents बहुत कम या कभी Change न होते हों और POST Method को तब Use किया जाना चाहिए, जबकि Response Pages के Contents के बार-बार Change होने की सम्भावना हो।
GET और POST इन दोनों में से हमें GET को कभी भी ऐसे कामों के लिए Use नहीं करना चाहिए, जो कि किसी भी तरह से Web Server या Server Side के किसी भी Resource में किसी तरह का कोई Change करते हों। जैसेकि Database के किसी Content को Update करना अथवा किसी Order Form को Web Server पर Send करना आदि।
हम जिस तरह के Request Method को Use करते हैं, Web Server पर उस Request method को Identify करने के लिए हम PHP के $_SERVER Super Global Variable का प्रयोग करके इस बात का पता लगा सकते हैं कि हमने किस Method को Use किया है। इसके लिए हमें $_SERVER Array के REQUEST_MEHTOD Key वाले Element को निम्नानुसार Use करना होता हैः
if($_SERVER['REQUEST_METHOD'] = 'GET') { // Handle a GET Request } else { die("die is exactly equivalent to exit() Statement."); }
उपरोक्त if Statement कहता है कि यदि HTML Form से User के Data को Web Server पर Send करने के लिए GET Method का प्रयोग किया गया हो, तो GET Request को if Statement Block में Handle किया जाए, अन्यथा Exit किया जाए।
Parameters
HTML Form से आने वाले Data को PHP द्वारा Web Server पर Access करने के लिए हमें $_GET, $_POST या $_FILES Array को Use करना होता है। इस Array में Keys के रूप में आने वाले Parameters का नाम होता है और Values के रूप में उन Parameters की Values होती हैं।
हालांकि HTML Form के Field Names में Dots Valid होते हैं, लेकिन PHP Variable Names में Dots Valid नहीं होते। इसलिए जब Client से Server पर कोई ऐसा Field Name आता है, जिसके नाम में Dot का प्रयोग किया गया हो, तो Server Side के इन Super Global Arrays में वह Dot एक Underscore में Convert हो जाता है।
एक Practical Example द्वारा हम HTML Form से आने वाले Data को PHP द्वारा Handle करने की प्रक्रिया को समझने की कोशिश करते हैं।
MVC Pattern एक Proved Programming Pattern है, जिसमें किसी Application के View, Model व Control को एक दूसरे से पूरी तरह से Separate रखा जाता है, ताकि Application को Create, Debug, Manage, Maintain व Upgrade करना Easy रहे।
इसलिए हम हमारे इस Program में HTML Form वाले HTML Page जो कि Application के View को Represent करता है व उस HTML Form से आने वाले Data को Handle करने के लिए बनाए जाने वाले PHP Page जो कि Application के Controller को Represent करता है, दोनों को दो अलग-अलग Separate Files के रूप में Create कर रहे हैं।
<!-- HTML Registration Form --> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document</title> </head> <body> <form action="register.php" method="get"> <label>Username: </label><input name="username" type="text"> <label>Password </label><input name="password" type="text"> <input name="submit" type="submit" value="Login"> </form> </body> </html>
यहां हमने एक HTML Page Create किया है, जिसमें एक HTML Form है। ये हमारी View File है। इस HTML Form में method Attribute में हमने GET Method Set किया है जबकि action Attribute में हमने register.php File का Path दिया है, जो कि हमारी Controller File है।
जब हम हमारे HTLM Page को Web Site में Interpret करते हैं, तो ये Page हमें निम्नानुसार दिखाई देता हैः
![get and post Method in PHP - Hindi](https://www.bccfalna.com/ebooks/wp-content/uploads/ebooks/2015/12/get-and-post-Method-in-PHP-Hindi-0.png)
इस Form में Username व Password Fill करने के बाद Login Button पर Click करते ही हमारी register.php File Execute हो जाती है, क्योंकि इस HTML Form में हमने action Attribute में register.php File को Specify किया है।
जब हम इस Form पर अपना Username व Password Fill करके Login Button पर Click करते हैं, तो हमारा Web Browser हमारे Form के Data की GET Method के आधार पर Request Message Create करता है, जो कि निम्नानुसार होता हैः
http://localhost/register.php?username=kuldeep&password=password&submit=Login
अब हमारा Query String, जिसमें कि हमारे HTML Form का Data Parameters जो कि property=value के Pair के रूप में होता है, इस HTTP GET Method का प्रयोग करते हुए register.php File पर Process होने के लिए Send करता है। हमारी register.php File निम्नानुसार हैः
<!-- register.php --> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document</title> </head> <body> <?php $username = $_REQUEST['username']; $password = $_REQUEST['password']; ?> <h3>Your Username and Password is</h3> Username: <?php echo $username ?> Password: <?php echo $password ?> </body> </html>
register.php File, HTML Page से आने वाले Query Message के Parameters को $_REQUEST Super Global Variable द्वारा Current Page यानी register.php File में Capture करता है और उन्हें register.php File में Process करते हुए एक नया HTML Web Page Create करता है।
![get and post Method in PHP - Hindi](https://www.bccfalna.com/ebooks/wp-content/uploads/ebooks/2015/12/get-and-post-Method-in-PHP-Hindi-1.png)
PHP की विशेषता ये है कि हम PHP के Codes को किसी भी ऐसे HTML Page में Embed कर सकते हैं, जिसका Extension .php हो। परिणामस्वरूप register.php File में हमने registration.php File से आने वाले Query String Message से Parameters को Accept करने के लिए निम्नानुसार $_REQUEST Super Global Variable को Use किया हैः
<?php $username = $_REQUEST['username']; $password = $_REQUEST['password']; ?>
चूंकि PHP के जिन Codes को PHP Parser पर Parse या Interpret करना होता है, उन्हें हमेंशा <?php … ?> के बीच लिखा जाता है, इसलिए उपरोक्त Code में हमने registration.php HTML Page के Form से आने वाले Username व Password को register.php File में प्राप्त करने के लिए उपरोक्त तरीके से PHP Code लिखा है।
जब हम किसी .php File में कोई PHP Code Block लिखते हैं, तो वह Code पूरी File में तब तक के लिए Available हो जाता है, जब तक कि File PHP Interpreter पर Interpret होकर Client की Request को पूरा करने के लिए नया HTML Page Generate नहीं कर देता।
परिणामस्वरूप उपरोक्त Code से जो Username व Password Query String से $username व $password Variables में Return होता है, वह Username व Password पूरी File में Available होने की वजह से हम उसे पूरी File में कहीं भी उपयोग में ले सकते हैं। इसीलिए HTML Form से आने वाले Username व Password को हमने हमारे register.php Page में निम्नानुसार Code द्वारा फिर से Display किया हैः
Username: <?php echo $username ?> Password: <?php echo $password ?>
हमें हमारी File में जहां कहीं भी यानी HTML Codes के बीच भी जहां कहीं भी PHP Code को Use करना होता है, हमें उस PHP Code को <?php … ?> के बीच Enclose करना जरूरी होता हैं। इसीलिए हमने उपरोक्त Code में Username व Password को फिर से PHP Tag के बीच Enclose किया है।
हम जिस किसी भी Code को PHP Tag के बीच Enclose करते हैं, वह Code PHP Interpreter पर Interpret होने के बाद ही फिर से Client Web Browser में Return होने के लिए तैयार होता है।
यानी Web Browser में कभी भी PHP Code दिखाई नहीं देता बल्कि PHP Code के Process होने के बाद जो HTML Code Generate होता है, वो HTML Code ही दिखाई देता है। परिणामस्वरूप यदि हम register.php Page के Source Code को देखना चाहें, तो वह Code हमें कुछ निम्नानुसार दिखाई देगा, जिसमें कोई भी PHP Code नहीं हैः
<!-- Processed register.php Page Source Code --> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document</title> </head> <body> <h3>Your Username and Password is</h3> Username: kuldeep Password: password</body> </html>
हालांकि हम देख सकते हैं कि हमारी Actual register.php File व Processed register.php File, दोनों Files के Codes में काफी अन्तर है। Actual register.php File में विभिन्न PHP Codes दिखाई दे रहे हैं, जबकि Processed PHP File में कोई PHP Code दिखाई नहीं दे रहा है।
ऐसा इसलिए हो रहा है ये क्योंकि जब registration.php HTML Page में Form के Data यानी Username व Password Fill करके हम Login Button पर Click करते हैं, तब Web Browser HTML Form में Specify किए गए Method का प्रयोग करते हुए HTML Form के विभिन्न Data को Web Server के उस Page पर भेजता है, जिसे हमने HTML Form के action Attribute में Specify किया है।
परिणामस्वरूप हमारे registration.php Page के HTML Form का Data GET Method का प्रयोग करते हुए register.php File पर Send होता है।
जब Web Server को Request Message में किसी PHP File का नाम मिलता है, तो Web Server ये समझता है कि उस File के Data को पहले Process करना है, क्योंकि Processing के बाद ही उपयुक्त Result Generate होगा।
फलस्वरूप Web Server register.php File के Source Codes को Top to Bottom व Left to Right के क्रम में Read करते हुए उन Codes को Scan करता है, जो कि <?php … ?> के बीच लिखे होते हैं और उन Codes को PHP Interpreter पर भेज देता है।
PHP Interpreter पर PHP Tag के बीच Enclosed PHP Codes Parse या Interpret होते हैं, और register.php File में जिन स्थानों पर <?php … ?> PHP Tag का प्रयोग किया गया होता है, Exactly उन्हीं स्थानों पर Interpreted Results Place हो जाते हैं।
यानी जब register.php File का <?php echo $username; ?> Statement Parse होता है, तो जिस स्थान पर इस Statement को लिखा गया है, PHP Interpreter Exactly उसी स्थान पर $username Variable की Value को Echo कर देता है।
परिणामस्वरूप हमारे Resultant Parsed register.php Page में हमें PHP Codes के स्थानों पर Variables की Actual Values दिखाई देने लगती हैं। यही कारण है कि हमारे Actual register.php Source Codes व Parsed Source Codes दोनों एकदम अलग-अलग दिखाई दे रहे हैं।
चलिए, हम एक और उदाहरण Program देखते हैं, जिसमे HTLM Form में हम दो संख्याओं को Input करेंगे जिन्हे जोडने के बाद Result को फिर से नए Web Page में Display किया जाएगा। चूंकि HTML केवल Data को Display करने का काम कर सकता है, इसलिए जोड करने का काम हमें PHP द्वारा करवाना होगा। हमारा HTML Form Page निम्नानुसार हैः
<!-- addInput.php --> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document</title> </head> <body> <h1>Addition</h1> <form action="addResult.php" method="get"> <label>First Value: </label><input name="firstValue" type="text"> <label>Second Value: </label><input name="secondValue" type="text"> <input name="submit" type="submit" value="Total"> </form> </body> </html>
![get and post Method in PHP - Hindi](https://www.bccfalna.com/ebooks/wp-content/uploads/ebooks/2015/12/get-and-post-Method-in-PHP-Hindi-2-580x194.png)
जब हम इस Form पर दो Values को Enter करके Total Button पर Click करेंगे, तो ये दोनों Values हमारे Web Server पर पहुंचेंगी, जहां addResult.php नाम के Page पर हमें इन Values को PHP Code द्वारा जोडना होगा।
क्योंकि Processing व Calculation का सारा काम PHP ही कर सकता है और जोडने के काम को करने के लिए हमने इस Page के action Attribute में addResult.php नाम की File को ही Specify किया है। इसलिए हमारी addResult.php File का Code हमें निम्नानुसार लिखना होगाः
<!-- addResult.php --> <!DOCTYPE HTML> <html> <head> <title>Total</title> </head> <body> <?php $firstValue = $_REQUEST['firstValue']; $secondValue = $_REQUEST['secondValue']; $total = $firstValue + $secondValue; ?> <h3> Addition of <?php echo $firstValue ." and " . $secondValue . ':'. $total ?> </h3> </body> </html>
![get and post Method in PHP - Hindi](https://www.bccfalna.com/ebooks/wp-content/uploads/ebooks/2015/12/get-and-post-Method-in-PHP-Hindi-3-580x149.png)
उपरोक्त PHP Code के Process होने के बाद के परिणाम को हम उपरोक्त चित्र में देख सकते हैं। अब आप समझ गए होंगे कि हम किस तरह से PHP Code को HTML Page में Embed कर सकते हैं और किस तरह से एक Static Web Page को Dynamic Web Page में Convert कर सकते हैं।
Static Web Page व Dynamic Web Page में केवल यही एक अन्तर है कि हम Dynamic Web Page में किसी HTML Page के Form से आने वाले Data के आधार पर किसी तरह की Content Perform करके Resultant Page को Change या Modify कर सकते हैं।
जैसाकि उपरोक्त उदाहरण में देख सकते हैं कि यदि हम addInput.php Page पर Placed Text Boxes में Values को Change कर दें, तो addResult.php Page पर प्राप्त होने वाला Output भी उस Input Page की संख्याओं के अनुसार बदल जाता है, क्योंकि addResult.php एक Dynamic Web Page है, जबकि Static Web Pages के साथ ऐसा नहीं होता। Static Web Pages के Output को यदि हमें Change करना हो, तो हमें उन Changes को Manually Perform करना पडता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF