फॉर्म सबमिट उदाहरण के साथ कोड इग्निटर फॉर्म सत्यापन

कोड इग्नाइटर में फॉर्म

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

HTML फॉर्म संरचना

निम्नलिखित कोड एक सामान्य HTML फॉर्म की संरचना दिखाता है।

<form id="frmUsers" name="frmUsers" method="POST" action="create_user.php">
	<input type="text" id="user_id" name="user_id">
	<input type="password" id="password" name="password">

	<input type="submit" value="Submit">
</form>

यहाँ,

  • … फॉर्म के ओपनिंग और क्लोजिंग टैग हैं। आईडी और नाम विशेषता फॉर्म का नाम और आईडी निर्दिष्ट करती है। विधि विशेषता उपयोग की जाने वाली HTTP क्रिया को निर्दिष्ट करती है। इसे आमतौर पर POST क्रिया द्वारा निर्दिष्ट किया जाता है
  • फ़ॉर्म तत्वों को निर्दिष्ट करता है। नाम विशेषता वह चर नाम है जिसे प्रोसेसिंग के लिए बैकएंड सर्वर पर सबमिट किया जाता है।

कोडइग्निटर फॉर्म हेल्पर

HTML को समझना और लिखना बहुत आसान है, लेकिन CodeIgniter इससे चीजें और भी सरल हो जाती हैं। कोड इग्नाइटर में HTML फॉर्म बनाने के लिए बिल्ट-इन फ़ंक्शन हैं।

आइए निम्नलिखित CodeIgniter फॉर्म सबमिट कोड पर विचार करें जो फॉर्म बनाने के लिए फॉर्म हेल्पर का उपयोग करता है

 <?php
        echo form_open('create_user.php', ['id' => 'frmUsers']);
        
        echo form_label('User Id', 'user_id');
        echo form_input(['name' => 'user_id']);
        
        echo form_label('Password', 'password');
        echo form_input(['type' => 'password', 'name' => 'password']);
        
        echo form_submit('btnSubmit', 'Create User');
        
        echo form_close();
        ?>

यहाँ,

  • echo form_open('create_user.php', ['id' => 'frmUsers']); फॉर्म का ओपनिंग टैग बनाता है, एक्शन को POST Verb पर सेट करता है और एक्शन URL को create_user.php पर सेट करता है
  • echo form_label('User Id', 'user_id'); एक लेबल बनाता है जो user_id के नाम के साथ इनपुट फ़ील्ड के लिए उपयोगकर्ता आईडी पढ़ता है।
  • echo form_input(['name' => 'user_id']); user_id के नाम के साथ टेक्स्ट प्रकार का एक इनपुट फ़ील्ड बनाता है
  • echo form_submit('btnSubmit', 'Create User'); Create User लेबल के साथ एक सबमिट बटन बनाता है
  • इको फॉर्म_क्लोज(); फॉर्म को बंद करता है

जैसा कि आप ऊपर दिए गए CodeIgniter कोड से देख सकते हैं, फॉर्म हेल्पर्स हमारे लिए शुद्ध PHP का उपयोग करके फॉर्म बनाना आसान बनाते हैं। फॉर्म हेल्पर विधियों में विशेषताएँ पास करके, हम फॉर्म के लिए जेनरेट किए गए HTML को कस्टमाइज़ कर सकते हैं।

उपरोक्त कोड निम्नलिखित HTML फॉर्म कोड उत्पन्न करता है

        <form action="http://localhost:3000/index.php/create_user.php" id="frmUsers" method="post" accept-charset="utf-8">
            <label for="user_id">User Id</label>
            <input type="text" name="user_id" value=""/>

            <label for="password">Password</label>
            <input type="password" name="password" value=""/>

            <input type="submit" name="btnSubmit" value="Create User"/>
        </form>

फॉर्म हेल्पर का उपयोग करने का सबसे बड़ा लाभ यह है कि यह अर्थगत रूप से सही कोड उत्पन्न करता है जो निर्धारित HTML मानकों का पालन करता है।

अधिक जानकारी के लिए आप आधिकारिक CodeIgniter दस्तावेज़ देख सकते हैं

https://codeigniter.com/user_guide/helpers/form_helper.html

कोडइग्निटर फॉर्म उदाहरण

कोड इग्नाइटर की मूल बातें कवर करने के बाद, आइए अपने ट्यूटोरियल प्रोजेक्ट पर वापस आते हैं जिस पर हम इस पूरे सत्र में काम कर रहे हैं। कोडइग्निटर ट्यूटोरियल श्रृंखलासंक्षेप में, ट्यूटोरियल प्रोजेक्ट एक संपर्क प्रबंधन ऐप बनाता है जो डेटाबेस में विवरण संग्रहीत करेगा।

संपर्क बनाएं

पिछले ट्यूटोरियल में, हमने अपने एप्लिकेशन और सरल दृश्यों के लिए रूट बनाए थे। application/views/contacts/create.php खोलें

create.php के लिए कोड को इस प्रकार संशोधित करें

<div class="column">
    <h2 class="title">Create Contact</h2>
    <form action="<?= base_url('contacts/store') ?>" method="POST">
        <div class="field">
            <label class="label">Contact Name</label>
            <div class="control">
                <input id="name" name="name" class="input" type="text" placeholder="Type the contact name">
            </div>
        </div>
        <div class="field">
            <label class="label">Contact Number</label>
            <div class="control">
                <input id="name" name="name" class="input" type="text" placeholder="Type the contact number">
            </div>
        </div>
        <div class="field">
            <label class="label">Email Address</label>
            <div class="control">
                <input id="email" name="email" class="input" type="email" placeholder="Type the email address">
            </div>
        </div>
        <div class="field is-grouped">
            <div class="control">
                <button class="button is-link">Save Contact</button>
            </div>
        </div>
    </form>
</div>

नोट: उपरोक्त कोड फॉर्म बनाने के लिए सादे HTML का उपयोग करता है।

आइए अब देखें कि हमारे फॉर्म वेब ब्राउज़र में कैसे दिखते हैं

निम्नलिखित URL को हमारे वेब ब्राउज़र में लोड करें।

http://localhost:3000/contacts/create

यदि आप ट्यूटोरियल प्रोजेक्ट बना रहे हैं, तो आपको निम्नलिखित देखने में सक्षम होना चाहिए

कोडइग्निटर फॉर्म

कोडइग्निटर में फॉर्म सत्यापन

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

सत्यापन उपरोक्त समस्याओं का समाधान करता है। वेब अनुप्रयोगों के साथ काम करते समय कोड इग्निटर सत्यापन दो (2) मोर्चों पर किया जाता है।

क्लाइंट-साइड वैलिडेशन वेब ब्राउज़र की ओर से किया जाता है। इसमें आमतौर पर HTML और का उपयोग शामिल होता है Javaस्क्रिप्ट। क्लाइंट-साइड वैलिडेशन से परफॉरमेंस बेहतर होती है क्योंकि सब कुछ क्लाइंट-साइड पर ही किया जाता है। इसलिए, सर्वर पर डेटा सबमिट करने की कोई ज़रूरत नहीं है। क्लाइंट-साइड वैलिडेशन का नुकसान यह है कि उपयोगकर्ता के पास इस पर नियंत्रण होता है। अगर आप इस पर भरोसा करते हैं Javaस्क्रिप्ट को मान्य करने और उपयोगकर्ता को अक्षम करने के लिए Javaयदि आप ब्राउज़र में स्क्रिप्ट नहीं खोलते हैं, तो आपका सत्यापन विफल हो जाएगा।

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

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

फॉर्म सत्यापन नियम जोड़ना

कोड इग्नाइटर में एक अंतर्निहित सत्यापन लाइब्रेरी है। लाइब्रेरी को निम्न पंक्ति का उपयोग करके लोड किया जाता है

$this->load->library('form_validation');

कोडइग्निटर फॉर्म सत्यापन लाइब्रेरी का उपयोग निम्नलिखित कुछ क्रियाएं करने के लिए किया जा सकता है

  • आवश्यक फ़ील्ड की जाँच करें। यह सबमिट किए गए मानों की जाँच करता है और यदि आवश्यक के रूप में टैग किए गए फ़ील्ड में कोई मान नहीं है तो त्रुटि लौटाता है
  • डेटा प्रकार सत्यापन - कुछ फ़ील्ड के लिए केवल संख्यात्मक मान की आवश्यकता हो सकती है। यदि कोई गैर-संख्यात्मक मान पाया जाता है, तो लाइब्रेरी एक त्रुटि लौटाती है। फ़ॉर्म सबमिशन का निष्पादन भी निरस्त हो जाता है।
  • लंबाई सत्यापन - कुछ डेटा प्रकारों के लिए फ़ील्ड में एक निश्चित न्यूनतम या अधिकतम वर्ण संख्या की आवश्यकता होती है। ऐसे मामलों में सत्यापन लाइब्रेरी काम आती है।
  • डेटा सैनिटाइजेशन - वैलिडेशन लाइब्रेरी में ऐसी क्षमताएं भी होती हैं जो सुरक्षा कारणों से सबमिट किए गए डेटा से दुर्भावनापूर्ण कोड हटाती हैं। उदाहरण के लिए, यदि सबमिट किए गए मान सक्रिय हैं Javaस्क्रिप्ट या SQL इंजेक्शन कोड का उपयोग करते समय, सत्यापन लाइब्रेरी हानिकारक कोड को हटा देती है और उसे बेकार बना देती है।
  • अद्वितीय डेटाबेस फ़ील्ड को मान्य करें - मान लीजिए कि आपके पास एक फ़ॉर्म है जहाँ उपयोगकर्ता ईमेल पते का उपयोग करके साइन अप करते हैं। आप यह सुनिश्चित करना चाहेंगे कि ईमेल पता अद्वितीय हो। लाइब्रेरी आपके लिए सबमिट किए गए डेटा को डेटाबेस टेबल और फ़ील्ड के विरुद्ध जाँचना आसान बनाती है। इससे आपको पता चलता है कि मान पहले ही ले लिया गया है।

सत्यापन नियम निम्नलिखित प्रारूप का उपयोग करके सेट किए जाते हैं

$this->form_validation->set_rules('field','human readable field','rule',['custom message']);

यहाँ,

  • 'फ़ील्ड' लाइब्रेरी द्वारा मान्य किए जाने वाले फ़ॉर्म फ़ील्ड नाम को निर्दिष्ट करता है
  • 'मानव पठनीय फ़ील्ड' सत्यापन के अंतर्गत फ़ील्ड के मानव-पठनीय प्रारूप को निर्दिष्ट करता है। त्रुटि होने पर इसे उपयोगकर्ता को वापस दिखाया जाता है।
  • 'नियम' लागू किए जाने वाले सत्यापन नियम को निर्दिष्ट करता है, जैसे कि आवश्यक, संख्यात्मक, जांचें कि न्यूनतम लंबाई है या नहीं... आदि।
  • ['कस्टम संदेश'] वैकल्पिक है और इसका उपयोग कस्टम सत्यापन संदेश सेट करने के लिए किया जा सकता है जिसे सत्यापन नियम विफल होने पर प्रदर्शित किया जाना चाहिए।

संपर्क नाम को मान्य करने के लिए CodeIgniter में फॉर्म सबमिट करने का उदाहरण नीचे दिया गया है

$this->form_validation->set_rules('contact_number', 'Contact Number', 'required');

यहाँ,

  • उपरोक्त कोड जाँचता है कि contact_number फ़ील्ड दर्ज की गई है या नहीं। यदि यह सेट नहीं है तो एक त्रुटि देता है जिसमें कहा जाता है कि संपर्क नंबर फ़ील्ड आवश्यक है।

निर्धारित नियमों के अनुसार सत्यापन चलाने के लिए, हम सत्यापन लाइब्रेरी के निम्नलिखित फ़ंक्शन का उपयोग करते हैं

$this->form_validation->run()

यदि उपरोक्त कोड गलत रिटर्न करता है, तो इसका मतलब है कि एक या अधिक सेट नियम विफल हो गए हैं। यदि यह सही रिटर्न करता है, तो इसका मतलब है कि सभी सत्यापन नियम पास हो गए हैं, और आप आगे की कार्रवाई के साथ आगे बढ़ सकते हैं।

आइए सत्यापन नियमों के और उदाहरण देखें। मान लीजिए कि आप कुछ फ़ील्ड जैसे संपर्क नाम, नंबर और ईमेल पते को सत्यापित करना चाहते हैं, तो आप इसे पूरा करने के लिए निम्न कोड का उपयोग कर सकते हैं।

$rules = array(
        array(
                'field' => 'contact_name',
                'label' => 'Contact Name',
                'rules' => 'required'
        ),
        array(
                'field' => 'contact_number',
                'label' => 'Contact Number',
                'rules' => 'required',
                'errors' => array(
                        'required' => 'You must provide a %s.',
                ),
        ),
        array(
                'field' => 'email_address',
                'label' => 'Email Address',
                'rules' => 'required'
        )
);

$this->form_validation->set_rules($rules);

यहाँ,

  • कोडइग्निटर में ईमेल सत्यापन के उपरोक्त उदाहरण में, हम लाइब्रेरी के set_rules फ़ंक्शन के लिए नियमों के साथ फ़ील्ड की एक सरणी प्रदान करते हैं। जब आप कुछ फ़ील्ड को मान्य कर रहे होते हैं तो यह आसान हो जाता है।

अद्वितीय सत्यापन

यदि हम संपर्क नंबर को सत्यापित करना चाहते हैं ताकि यह सुनिश्चित हो सके कि हम एक ही नंबर को दो बार सेव न करें, तो इसके लिए हम निम्नलिखित नियम का उपयोग कर सकते हैं।

$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');

यहाँ,

  • | का उपयोग कई नियमों को एक साथ जोड़ने के लिए किया जाता है
  • is_unique[contacts.contact_number] जाँचता है कि contact_number का मान डेटाबेस तालिका संपर्कों में contact_number फ़ील्ड मानों के विरुद्ध अद्वितीय है या नहीं।

फ़ॉर्म सत्यापन त्रुटि संदेश प्रदर्शित करना

यदि फॉर्म के प्रसंस्करण के दौरान कोई त्रुटि होती है, तो आप हुई सत्यापन त्रुटियों को प्रदर्शित करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं

<?php echo validation_errors(); ?>

यहाँ,

  • उपरोक्त फ़ंक्शन सभी घटित त्रुटियों को लौटाता है।

सबमिट किए गए फ़ॉर्म का डेटा भरना: स्टिकी फ़ॉर्म

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

<?php echo set_value('field_name'); ?>

यहाँ,

  • उपरोक्त कोड उपयोगकर्ता द्वारा दर्ज किया गया इनपुट प्रदर्शित करता है।

सत्यापन लाइब्रेरी के अंतर्गत उपलब्ध विधियों पर संपूर्ण संदर्भ मार्गदर्शिका के लिए, आप CodeIgniter के आधिकारिक उपयोगकर्ता गाइड से API दस्तावेज़न का संदर्भ ले सकते हैं।

https://codeigniter.com/userguide3/libraries/form_validation.html

कोडइग्निटर फॉर्म सत्यापन उदाहरण

इन ट्यूटोरियल श्रृंखलाओं के दौरान, हम अपने ट्यूटोरियल प्रोजेक्ट में और अधिक कोड जोड़ रहे हैं जो एक संपर्क प्रबंधन अनुप्रयोग है। इस अनुभाग में, हम सत्यापन लाइब्रेरी लोड करेंगे और देखेंगे कि हम इसे वास्तविक दुनिया के उदाहरण अनुप्रयोग का उपयोग करके व्यावहारिक उपयोग में कैसे ला सकते हैं।

स्टोर विधि को शामिल करने के लिए रूट कोड को निम्नानुसार संशोधित करें

$route['default_controller'] = 'welcome';
$route['contacts'] = 'contacts';
$route['create'] = 'contacts/create';
$route['store'] = 'contacts/store';
$route['edit/:id'] = 'contacts/edit';
$route['update/:id'] = 'contacts/update';
$route['delete/:id'] = 'contacts/delete';
$routes['users'] = 'welcome/users';

आइए अब संपर्क नियंत्रक में फ़ॉर्म सत्यापन लाइब्रेरी लोड करें और कुछ सत्यापन नियम सेट करें।

कोड इग्निटर उदाहरण में नीचे दिए गए फॉर्म सत्यापन में दिखाए अनुसार कोड को संशोधित करें:

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Contacts extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('url', 'form');
        $this->load->library('form_validation');
    }

    public function index() {
        $this->load->view('header');
        $this->load->view('contacts/index');
        $this->load->view('footer');
    }

    public function create() {
        $this->load->view('header');
        $this->load->view('contacts/create');
        $this->load->view('footer');
    }

    public function store() {
        $rules = array(
            array(
                'field' => 'contact_name',
                'label' => 'Contact Name',
                'rules' => 'required'
            ),
            array(
                'field' => 'contact_number',
                'label' => 'Contact Number',
                'rules' => 'required',
                'errors' => array(
                    'required' => 'You must provide a %s.',
                ),
            ),
            array(
                'field' => 'email_address',
                'label' => 'Email Address',
                'rules' => 'required'
            )
        );

        $this->form_validation->set_rules($rules);

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('header');
            $this->load->view('contacts/create');
            $this->load->view('footer');
        } else {
            redirect(base_url('contacts'));
        }
    }

    public function edit($id) {
        $this->load->view('header');
        $this->load->view('contacts/edit');
        $this->load->view('footer');
    }

    public function update($id) {
        $this->load->view('header');
        $this->load->view('contacts/update');
        $this->load->view('footer');
    }

    public function delete($id) {
        $this->load->view('header');
        $this->load->view('contacts/delete');
        $this->load->view('footer');
    }
}

यहाँ,

  • $rules = array(…) सेट सत्यापन नियमों को परिभाषित करता है
  • $this->form_validation->set_rules($rules); सत्यापन नियम सेट करता है
  • अगर ($this->form_validation->run() == FALSE) {…} सत्यापन नियम चलाता है और अगर वे विफल होते हैं तो फॉर्म सत्यापन त्रुटियों के साथ फिर से प्रदर्शित होता है। अगर सत्यापन पास हो जाता है, तो हम बस सूची संपर्क पृष्ठ पर रीडायरेक्ट कर रहे हैं। सामान्य परिस्थितियों में हम डेटा को डेटाबेस में लिखेंगे। हम अगले ट्यूटोरियल में ऐसा करेंगे जब हम देखेंगे डेटाबेस.

application/contacts/create.php कोड में create दृश्य को संशोधित करें जैसा कि नीचे दिए गए फॉर्म सत्यापन CodeIgniter उदाहरण में दिखाया गया है:

<div class="column">
    <h2 class="title">Create Contact</h2>
    <div class="notification is-danger">
    <?php echo validation_errors(); ?>
    </div>
    <form action="<?= base_url('contacts/store') ?>" method="POST">
        <div class="field">
            <label class="label">Contact Name</label>
            <div class="control">
                <input id="contact_name" name="contact_name" class="input" type="text" value="<?php echo set_value('contact_name'); ?>" placeholder="Type the contact name">
            </div>
        </div>
        <div class="field">
            <label class="label">Contact Number</label>
            <div class="control">
                <input id="contact_number" name="contact_number" class="input" type="text" value="<?php echo set_value('contact_number'); ?>" placeholder="Type the contact number">
            </div>
        </div>
        <div class="field">
            <label class="label">Email Address</label>
            <div class="control">
                <input id="email_address" name="email_address" class="input" type="email" value="<?php echo set_value('email_address'); ?>" placeholder="Type the email address">
            </div>
        </div>
        <div class="field is-grouped">
            <div class="control">
                <button class="button is-link">Save Contact</button>
            </div>
        </div>
    </form>
</div>

यहाँ,

  • सत्यापन प्रक्रिया के दौरान होने वाली त्रुटियों को हम प्रदर्शित करते हैं
  • यदि कोई हो तो पहले से सेट किया गया मान सेट करता है

आपको अपने वेब ब्राउज़र में निम्न URL लोड करना होगा। फिर कोई भी मान दर्ज किए बिना संपर्क बनाएँ पर क्लिक करें

कोडइग्निटर फॉर्म सत्यापन

सारांश

  • फॉर्म उपयोगकर्ताओं को एप्लिकेशन के साथ इंटरैक्ट करने और डेटा सबमिट करने का एक तरीका प्रदान करते हैं।
  • HTML को समझना और लिखना बहुत आसान है, लेकिन CodeIgniter इसे और भी सरल बना देता है। CodeIgniter में HTML फॉर्म बनाने के लिए बिल्ट-इन फ़ंक्शन हैं।
  • फॉर्म से डेटा संसाधित करते समय सत्यापन बहुत महत्वपूर्ण भूमिका निभाता है।
  • इस ट्यूटोरियल में, हमने प्रमुख सत्यापन रणनीतियों और उनके फायदे और नुकसान देखे हैं। हमने यह भी सीखा कि कोड इग्निटर की अंतर्निहित सत्यापन लाइब्रेरी का उपयोग करके सत्यापन नियम और त्रुटि संदेश कैसे सेट करें। हमने व्यावहारिक अनुप्रयोग में प्राप्त ज्ञान को लागू करके पाठ समाप्त किया है।