Validation du formulaire CodeIgniter avec exemple de soumission de formulaire

Formulaire dans CodeIgniter

Les formulaires permettent aux utilisateurs d'interagir avec l'application et de soumettre des données. Il peut être utilisé pour un formulaire de contact qu'un visiteur du site Web peut remplir et nous envoyer les informations. Les informations reçues sont généralement stockées dans la base de données ou envoyées par courrier électronique.mail.

Structure du formulaire HTML

Le following le code montre la structure d'un formulaire HTML typique.

<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>

ICI,

  • … sont les balises d'ouverture et de fermeture du formulaire. Les attributs id et name spécifient le nom et l'identifiant du formulaire. L'attribut méthode spécifie le verbe HTTP à utiliser. Ceci est généralement spécifié par le verbe POST
  • Spécifie les éléments du formulaire. L'attribut name est le nom de la variable qui est soumis au serveur principal pour traitement.

Assistant de formulaire CodeIgniter

Le HTML est génial, il est facile à comprendre et à écrire, mais CodeIgniter rend les choses encore plus simples. CodeIgniter possède des fonctions intégrées pour créer des formulaires HTML.

Considérons ce qui suitwing Le formulaire CodeIgniter soumet le code qui utilise l'assistant de formulaire pour créer un formulaire

 <?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();
        ?>

ICI,

  • echo form_open('create_user.php', ['id' => 'frmUsers']); crée la balise d'ouverture du formulaire, définit l'action sur POST Verb et définit l'URL de l'action sur create_user.php
  • echo form_label('ID utilisateur', 'id_utilisateur'); crée une étiquette qui lit l'ID utilisateur pour le champ de saisie avec le nom user_id.
  • echo form_input(['name' => 'user_id']); crée un champ de saisie de type texte avec le nom user_id
  • echo form_submit('btnSubmit', 'Créer un utilisateur'); crée un bouton de soumission avec le libellé Créer un utilisateur
  • echo form_close(); ferme le formulaire

Comme vous pouvez le voir dans le code CodeIgniter ci-dessus, les assistants de formulaire nous permettent de créer facilement des formulaires en utilisant du PHP pur. En transmettant des attributs aux méthodes d'assistance du formulaire, nous pouvons personnaliser le code HTML généré pour le formulaire.

Le code ci-dessus génère le suiviwing Code du formulaire 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>

Le plus grand avantage de l’utilisation de l’assistant de formulaire est qu’il génère un code sémantiquement correct qui adhère aux normes HTML définies.

Vous pouvez vous référer à la documentation officielle de CodeIgniter pour plus d'informations.tails

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

Exemple de formulaire CodeIgniter

Après avoir couvert les bases de CodeIgniter, revenons à notre projet de tutoriel sur lequel nous avons travaillé tout au long de cette Série de didacticiels CodeIgniter. En résumé, le projet du didacticiel crée une application de gestion des contacts qui stockera les informationstails dans la base de données.

Créer un contact

dans le didacticiel précédent, nous avons créé des itinéraires pour nos applications et des vues simples. Ouvrez application/views/contacts/create.php

Modifiez le code de create.php comme suit

<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>

Remarque: le code ci-dessus utilise du HTML brut pour créer des formulaires.

Voyons maintenant à quoi ressemblent nos formulaires dans le navigateur Web

Chargez le suiviwing URL dans notre navigateur Web.

http://localhost:3000/contacts/create

Si vous avez créé le projet de didacticiel, vous devriez pouvoir voir ce qui suitwing

Formulaire CodeIgniter

Validation de formulaire dans CodeIgniter

La validation joue un rôle très critique lors du traitement des données des formulaires. Disons qu'un utilisateur s'inscrit sur un site Web ; nous voulons nous assurer qu'ils remplissent les formulaires requistails Et email adresse. Nous devons nous assurer que l'email L'adresse saisie est valide. Si nous travaillons avec des valeurs de date, nous voulons nous assurer que les plages de dates sont valides. Nous n'aurions pas à accepter une date comportant 32 jours dans un mois, etc.

La validation résout les problèmes ci-dessus. La validation CodeIgniter s'effectue sur deux (2) fronts lorsque vous travaillez avec des applications Web.

La validation côté client est effectuée du côté du navigateur Web. Cela implique généralement l'utilisation de HTML et de JavaScript. La validation côté client améliore les performances car tout est fait côté client. Il n’est donc pas nécessaire de soumettre les données au serveur. L’inconvénient de la validation côté client est que l’utilisateur en a le contrôle. Si vous comptez sur JavaScript pour valider et que l'utilisateur désactive JavaScript dans le navigateur, votre validation échouera.

La validation côté serveur est effectuée côté serveur. L'inconvénient de cette validation est que l'utilisateur doit soumettre les données au serveur pour traitement et attendre la réponse. Cela utilise les ressources du réseau et peut dégrader les performances. Le principal avantage de la validation côté serveur est que vous disposez d'un meilleur contrôle et que vous êtes assuré que vos règles de validation fonctionnent même si l'utilisateur désactive JavaScript dans le navigateur.

Une meilleure stratégie consiste à utiliser le côté client comme stratégie de validation principale et le côté serveur comme mécanisme de secours.

Ajout de règles de validation de formulaire

CodeIgniter dispose d'une bibliothèque de validation intégrée. La bibliothèque est chargée en utilisant le followwing en ligne

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

La bibliothèque de validation de formulaire CodeIgniter peut être utilisée pour effectuer certaines des opérations suivanteswing actes

  • Vérifiez les champs obligatoires. Ceci examine les valeurs soumises et renvoie une erreur si un champ qui a été marqué comme requis n'a pas de valeur.
  • Validation du type de données – certains champs peuvent nécessiter uniquement des valeurs numériques. Si une valeur non numérique est détectée, la bibliothèque renvoie une erreur. L'exécution de la soumission du formulaire est également interrompue.
  • Validation de la longueur – certains types de données nécessitent que les champs comportent un certain nombre minimum ou maximum de caractères. La bibliothèque de validation est utile dans de tels cas.
  • Désinfection des données – la bibliothèque de validation dispose également de fonctionnalités qui suppriment le code malveillant des données soumises pour des raisons de sécurité. Si, par exemple, les valeurs soumises contiennent du code JavaScript ou SQL Injection actif, la bibliothèque de validation supprime le code nuisible et le rend inutile.
  • Validez les champs de base de données uniques – supposons que vous disposiez d'un formulaire dans lequel les utilisateurs s'inscrivent à l'aide d'un e-mail.mail adresse. Vous voudriez vous assurer que l'email l'adresse est unique. La bibliothèque vous permet de vérifier facilement les données soumises par rapport à une table et un champ de base de données. Cela permet de savoir que la valeur a déjà été prélevée.

Les règles de validation sont définies à l'aide de la suitewing le format

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

ICI,

  • 'field' spécifie le nom du champ du formulaire à valider par la bibliothèque
  • 'humain readable champ' précise le champ humain.readable format du champ en cours de validation. C'est un affichageyed renvoyé à l'utilisateur lorsqu'une erreur se produit.
  • 'rule' spécifie la règle de validation à appliquer, telle que obligatoire, numérique, vérifier si la longueur minimale est… etc.
  • ['message personnalisé'] est facultatif et peut être utilisé pour définir un message de validation personnalisé qui doit être affiché.yed lorsque la règle de validation échoue.

Following est un formulaire soumis dans l'exemple CodeIgniter pour valider le nom du contact

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

ICI,

  • Le code ci-dessus vérifie si le champ contact_number a été renseigné. S'il n'est pas défini, renvoie une erreur indiquant que le champ Numéro de contact est requis.

Pour exécuter la validation par rapport aux règles définies, nous utilisons la méthode suivantewing fonction de la bibliothèque de validation

$this->form_validation->run()

Si le code ci-dessus renvoie false, cela signifie qu'une ou plusieurs règles définies ont échoué. Si le résultat est vrai, cela signifie que les règles de validation ont toutes été respectées et que vous pouvez poursuivre l'action.

Examinons d'autres exemples de règles de validation. Supposons que vous souhaitiez valider certains champs indiquant le nom, le numéro et l'e-mail du contact.mail adresse, vous pouvez utiliser le suiviwing code pour accomplir cela.

$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);

ICI,

  • Dans ce qui précède email validation dans l'exemple CodeIgniter, nous fournissons un tableau de champs avec des règles pour la fonction set_rules de la bibliothèque. Cela facilite la tâche lorsque vous validez certains champs.

Validation unique

Si nous voulons valider le numéro de contact pour nous assurer de ne pas enregistrer deux fois le même numéro, nous pouvons utiliser la méthode suivantewing règle pour faire ça.

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

ICI,

  • | est utilisé pour regrouper plusieurs règles ensemble
  • is_unique[contacts.contact_number] vérifie si la valeur de contact_number est unique par rapport aux valeurs du champ contact_number dans la table de base de données contacts.

Affichage des messages d'erreur de validation de formulaire

Si une erreur survient lors du traitement du formulaire, vous pouvez utiliser la suitewing code pour afficher les erreurs de validation survenues

<?php echo validation_errors(); ?>

ICI,

  • La fonction ci-dessus renvoie toutes les erreurs survenues.

Remplir les données du formulaire soumis : formulaires collants

Certains formulaires comportent de nombreux champs et si une erreur s'est produite, vous devez vous assurer que les données correctement ajoutées sont conservées. La bibliothèque de validation dispose de mécanismes pour y parvenir. Nous faisons cela en utilisant le followwing code.

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

ICI,

  • Le code ci-dessus affiche l'entrée que l'utilisateur a saisie.

Pour un guide de référence complet sur les méthodes disponibles dans la bibliothèque de validation, vous pouvez vous référer à la documentation de l'API dans le guide de l'utilisateur officiel de CodeIgniter.

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

Exemple de validation de formulaire CodeIgniter

Tout au long de cette série de didacticiels, nous avons ajouté davantage de code à notre projet de didacticiel qui est une application de gestion de contacts. Dans cette section, nous allons charger la bibliothèque de validation et voir comment nous pouvons la mettre en pratique à l'aide d'un exemple d'application réel.

Modifiez le code des routes comme suit pour inclure la méthode store

$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';

Chargeons maintenant la bibliothèque de validation de formulaire dans le contrôleur Contacts et définissons quelques règles de validation.

Modifiez le code comme indiqué dans la validation du formulaire ci-dessous dans l'exemple CodeIgniter :

<?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');
    }
}

ICI,

  • $rules = array(…) sets définit les règles de validation
  • $this->form_validation->set_rules($rules); définit les règles de validation
  • if ($this->form_validation->run() == FALSE) {…} exécute les règles de validation et si elles échouent, le formulaire est réaffichéyed avec des erreurs de validation. Si la validation réussit, nous redirigeons simplement vers la page de la liste des contacts. Dans des circonstances normales, nous écrivions les données dans la base de données. Nous le ferons dans les prochains tutoriels lorsque nous examinerons bases de données.

Modifiez la vue de création dans le code application/contacts/create.php comme indiqué dans l'exemple CodeIgniter de validation de formulaire ci-dessous :

<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>

ICI,

  • nous affichons les erreurs qui surviennent le cas échéant pendant le processus de validation
  • définit la valeur qui a été précédemment définie, le cas échéant

Vous devez charger le suiviwing URL dans votre navigateur Web. Cliquez ensuite sur Créer un contact sans saisir aucune valeur

Validation du formulaire CodeIgniter

Résumé

  • Les formulaires permettent aux utilisateurs d'interagir avec l'application et de soumettre des données.
  • Le HTML est génial, il est facile à comprendre et à écrire, mais CodeIgniter rend les choses encore plus simples. CodeIgniter possède des fonctions intégrées pour créer des formulaires HTML.
  • La validation joue un rôle très critique lors du traitement des données des formulaires.
  • Dans ce didacticiel, nous avons vu les principales stratégies de validation ainsi que leurs avantages et inconvénients. Nous avons également appris à définir des règles de validation et à afficher des messages d'erreur à l'aide de la bibliothèque de validation intégrée de CodeIgniter. Nous avons terminé la leçon en mettant en œuvre les connaissances acquises dans une application pratique.