PHP पाठ – पाठ 1 – फ़ॉर्म के साथ कार्य।
दैनिक जीवन में हम जानकारी टीवी, रेडियो, इंटरनेट या व्यक्तिगत बातचीत के माध्यम से प्राप्त करते हैं। वेबसाइटें भी उपयोगकर्ताओं से जानकारी प्राप्त करती हैं — लेकिन यह विशेष रूप से फॉर्म्स (forms) के माध्यम से किया जाता है। फॉर्म्स को आप किसी सर्वेक्षण या आवेदन फ़ॉर्म से तुलना कर सकते हैं। भले ही फॉर्म्स के तत्व सीमित हों, लेकिन वे उपयोगकर्ता से साइट के लिए आवश्यक सभी जानकारी प्राप्त करने की अनुमति देते हैं।
इस पाठ को अधिक प्रभावी ढंग से समझने के लिए आपको HTML में फ़ॉर्म बनाने पर आधारित पाठ पढ़ने चाहिए।
पहले पाठ को शुरू करने से पहले, आइए अपने एप्लिकेशन के लिए एक ढांचा (framework) तैयार करें — यानी एक क्लास जो हमारी साइट के कार्य को नियंत्रित करेगा।
हम एक फ़ोल्डर class बनाएँगे और उसमें simpleCMS.php फ़ाइल रखेंगें, जिसमें हमारी साइट प्रबंधन क्लास होगी। इसके अलावा, एक index.php फ़ाइल बनाएँगे जो इस क्लास को चलाएगी। साथ ही, संदेशों के लिए एक खाली फ़ोल्डर और एक स्टाइल फ़ाइल style.css बनाएँगे। इस प्रकार हमारे पास ये फ़ाइलें और फ़ोल्डर होंगे:
class/simpleCMS.php
messages/
index.php
style.css
simpleCMS.php फ़ाइल की सामग्री इस प्रकार होगी:
<?php class simpleCMS { // प्रबंधन क्लास public function display_public() { // संदेश प्रदर्शित करने की विधि } public function display_admin() { // संदेश जोड़ने की विधि } public function write($p) { // संदेश लिखने की विधि } } ?>
फिलहाल हम मेथड्स को खाली छोड़ देंगे; आगे हम उनमें कोड जोड़ेंगे।
style.css फ़ाइल:
*{ margin: 0; padding: 0; } body{ font: 12px "Lucida Grande", Sans-Serif; background: #ccc; } #page-wrap{ width: 500px; margin: 50px auto; padding: 20px; background: white; } h1, h2, h3{ font: 28px Georgia, Serif; border-bottom: 1px dotted #ccc; margin: 0 0 10px 0; } .clear{ clear: both; } input[type="text"], textarea{ padding: 3px; border: 1px solid #666; width: 350px; margin: 0 0 15px 0; } input[type="text"]{ font: 28px Georgia, Serif; } textarea { height: 100px; font: 12px "Lucida Grande", Sans-Serif; } label { background: #666; color: white; padding: 2px 6px; } .post{ margin: 0 0 20px 0; }
index.php फ़ाइल:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>PHP सीखें</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <div id="page-wrap"> <?php include_once('class/simpleCMS.php'); // क्लास फ़ाइल शामिल करें $obj = new simpleCMS(); // प्रबंधन क्लास का ऑब्जेक्ट बनाएँ ?> </div> </body> </html>
आइए समझते हैं कि यह कैसे काम करेगा। वेबसाइट लोड होने के साथ ही index.php फ़ाइल लोड होती है। फिलहाल यह खाली दिखाई देगी, लेकिन हमने क्लास को जोड़ा और उसका एक ऑब्जेक्ट बनाया है। इस ऑब्जेक्ट के मेथड्स हम आवश्यकतानुसार कॉल करेंगे। आवश्यक समय का निर्धारण हम if ऑपरेटर से करेंगे।
ग्लोबल वेरिएबल $_GET
HTML फ़ॉर्म में एक विशेषता होती है — method (get या post)। चुने गए मेथड के अनुसार डेटा या तो $_GET या $_POST में जाएगा। उदाहरण:
<form action="welcome.php" method="get"> नाम: <input type="text" name="fname" /> आयु: <input type="text" name="age" /> <input type="submit" /> </form>
जब हम submit पर क्लिक करते हैं, तब ब्राउज़र इस URL पर जाता है:
http://sitename/welcome.php?fname=Peter&age=37
इस प्रकार $_GET वेरिएबल बनता है — यानी "?" के बाद लिखे मान:
<?php print $_GET['fname']; print $_GET['age']; ?>
$_GET एक ऐरे है जिसमें URL से लिए गए डेटा होते हैं। उदाहरण के लिए:
http://sitename/example.php?number=45
<?php print $_GET['number']; ?>
यह स्क्रिप्ट “45” प्रदर्शित करेगी।
ग्लोबल वेरिएबल $_POST
$_POST भी उसी तरह काम करता है, लेकिन यह डेटा को URL में प्रदर्शित नहीं करता। उदाहरण:
<form action="welcome.php" method="post"> नाम: <input type="text" name="fname" /> आयु: <input type="text" name="age" /> <input type="submit" /> </form>
जब हम फॉर्म सबमिट करते हैं, तो यह जाता है:
http://sitename/welcome.php
और PHP में हम इन मानों तक पहुँच सकते हैं:
<?php print $_POST['fname']; print $_POST['age']; ?>
मुख्य अंतर यह है कि $_POST के मान URL में दिखाई नहीं देते — उन्हें केवल सर्वर-साइड PHP से एक्सेस किया जा सकता है।
संदेश जोड़ने का फ़ॉर्म बनाना
अब हम एक संदेश जोड़ने का फ़ॉर्म बनाएँगे। फ़ॉर्म डेटा भेजने के लिए POST का उपयोग करेगा, जबकि वेबसाइट का प्रबंधन GET पैरामीटर्स से किया जाएगा:
public function display_admin() { $content = ''; $content .= '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">'; $content .= '<label for="title">नाम:</label><br />'; $content .= '<input name="title" id="title" type="text" maxlength="150" />'; $content .= '<div class="clear"></div>'; $content .= '<label for="bodytext">संदेश:</label><br />'; $content .= '<textarea name="bodytext" id="bodytext"></textarea>'; $content .= '<div class="clear"></div>'; $content .= '<input type="submit" value="संदेश जोड़ें" />'; $content .= '</form>'; $content .= '<p><a href="/index.php">मुख्य पृष्ठ पर वापस जाएँ</a></p>'; return $content; }
ऊपर दिए गए कोड से अपना display_admin() मेथड बदलें। यह कोड उस समय दिखाया जाएगा जब हमें संदेश जोड़ना होगा। लेकिन डिफ़ॉल्ट रूप से केवल संदेश दिखने चाहिए। चलिए तय करें कि जब URL में admin=1 होगा, तभी फ़ॉर्म दिखेगा:
http://test/index.php?admin=1
अब हम index.php फ़ाइल को संशोधित करते हैं:
<?php include_once('class/simpleCMS.php'); $obj = new simpleCMS(); if($_GET['admin'] == 1){ print $obj->display_admin(); }else{ print $obj->display_public(); } ?>
और अब संदेशों को प्रदर्शित करने की विधि इस प्रकार होगी:
public function display_public() { $content = ''; $content .= '<p><a href="/index.php?admin=1">संदेश जोड़ें</a></p>'; return $content; }
अब हमारे पास एक कार्यशील फ़ॉर्म है जो डेटा को दूसरे पृष्ठ पर भेजता है। यदि आपके पृष्ठ पर "करेक्टर गड़बड़ी" दिखाई देती है, तो एक .htaccess फ़ाइल बनाएँ और उसमें यह पंक्ति जोड़ें:
AddDefaultCharset utf-8
यह सुनिश्चित करेगा कि सर्वर UTF-8 एनकोडिंग में काम करे।
आप अपने फ़ॉर्म का परीक्षण कर सकते हैं — यदि आप method="get" कर देते हैं, तो डेटा URL में प्रदर्शित होगा।
$content .= '<form action="' . $_SERVER['PHP_SELF'] . '" method="get">';
अब फॉर्म डेटा index.php पर URL के माध्यम से जाएगा। हम इन पैरामीटर्स की प्रोसेसिंग अगले पाठ में करेंगे, जहाँ हम फ़ाइलों में डेटा लिखना सीखेंगे।