Ejemplo de validación de formulario de CodeIgniter con envío de formulario

Formulario en CodeIgniter

Los formularios proporcionan una manera para que los usuarios interactúen con la aplicación y envíen datos. Se puede utilizar para un formulario de contacto que un visitante del sitio web puede completar y enviarnos la información. La información recibida generalmente se almacena en la base de datos o se envía a través de correo electrónico.mail.

Estructura del formulario HTML

El following El código muestra la estructura de un formulario HTML típico.

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

AQUÍ,

  • … son las etiquetas de apertura y cierre del formulario. Los atributos id y name especifican el nombre y la identificación del formulario. El atributo del método especifica el verbo HTTP que se utilizará. Esto generalmente se especifica mediante el verbo POST.
  • Especifica los elementos del formulario. El atributo de nombre es el nombre de la variable que se envía al servidor backend para su procesamiento.

Ayudante de formulario CodeIgniter

HTML es genial, es fácil de entender y escribir, pero CodeIgniter hace las cosas aún más simples. CodeIgniter tiene funciones integradas para crear formularios HTML.

Consideremos lo siguientewing Código de envío de formulario CodeIgniter que utiliza el asistente de formulario para crear un formulario

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

AQUÍ,

  • echo form_open('create_user.php', ['id' => 'frmUsers']); crea la etiqueta de apertura del formulario, establece la acción en POST Verb y establece la URL de la acción en create_user.php
  • echo form_label('Identificación de usuario', 'id_usuario'); crea una etiqueta que dice ID de usuario para el campo de entrada con el nombre de user_id.
  • echo form_input(['nombre' => 'user_id']); crea un campo de entrada de tipo texto con el nombre de user_id
  • echo form_submit('btnSubmit', 'Crear usuario'); crea un botón de envío con la etiqueta Crear usuario
  • eco form_close(); cierra el formulario

Como puede ver en el código CodeIgniter anterior, los asistentes de formulario nos facilitan la creación de formularios usando PHP puro. Al pasar atributos a los métodos auxiliares del formulario, podemos personalizar el HTML que se genera para el formulario.

El código anterior genera el siguientewing código de formulario 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>

La mayor ventaja de utilizar el asistente de formulario es que genera código semánticamente correcto que cumple con los estándares HTML establecidos.

Puede consultar la documentación oficial de CodeIgniter para obtener más información.tails

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

Ejemplo de formulario CodeIgniter

Después de cubrir los conceptos básicos de CodeIgniter, volvamos a nuestro proyecto tutorial en el que hemos estado trabajando a lo largo de este Serie de tutoriales de CodeIgniter. En resumen, el proyecto del tutorial crea una aplicación de administración de contactos que almacenará los datos details en la base de datos.

Crear contacto

En el tutorial anterior, creamos rutas para nuestras aplicaciones y vistas simples. Abrir aplicación/vistas/contactos/create.php

Modifique el código para create.php de la siguiente manera

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

Nota: El código anterior utiliza HTML simple para crear formularios.

Veamos ahora cómo se ven nuestros formularios en el navegador web.

Cargar el siguientewing URL en nuestro navegador web.

http://localhost:3000/contacts/create

Si ha estado creando el proyecto del tutorial, debería poder ver lo siguientewing

Formulario CodeIgniter

Validación de formulario en CodeIgniter

La validación juega un papel muy crítico al procesar datos de formularios. Digamos que un usuario se registra en un sitio web; Queremos asegurarnos de que completen el formulario requerido.tails Y email DIRECCIÓN. Necesitamos asegurarnos de que el email La dirección ingresada es válida. Si estamos trabajando con valores de fecha, entonces queremos asegurarnos de que los rangos de fechas sean válidos. No tendríamos que aceptar una fecha que tenga 32 días en un mes, etc.

La validación resuelve los problemas anteriores. La validación de CodeIgniter se realiza en dos (2) frentes cuando se trabaja con aplicaciones web.

La validación del lado del cliente se realiza por parte del navegador web. Esto suele implicar el uso de HTML y JavaScript. La validación del lado del cliente mejora el rendimiento ya que todo se hace en el lado del cliente. Por lo tanto, no es necesario enviar los datos al servidor. La desventaja de la validación del lado del cliente es que el usuario tiene control sobre ella. Si confía en JavaScript para validar y el usuario desactiva JavaScript en el navegador, su validación fallará.

La validación del lado del servidor se realiza en el lado del servidor. La desventaja de esta validación es que el usuario debe enviar los datos al servidor para su procesamiento y esperar la respuesta. Esto consume recursos de la red y puede degradar el rendimiento. La principal ventaja de la validación del lado del servidor es que tiene un mayor control y tiene la seguridad de que sus reglas de validación funcionarán incluso si el usuario desactiva JavaScript en el navegador.

Una mejor estrategia es utilizar el lado del cliente como estrategia de validación principal y el lado del servidor como mecanismo alternativo.

Agregar reglas de validación de formularios

CodeIgniter tiene una biblioteca de validación incorporada. La biblioteca se carga usando el siguientewing línea

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

La biblioteca de validación de formularios CodeIgniter se puede utilizar para realizar algunas de las siguientes acciones.wing acciones

  • Verifique los campos obligatorios. Esto examina los valores enviados y devuelve un error si un campo que ha sido etiquetado como requerido no tiene un valor
  • Validación del tipo de datos: algunos campos pueden requerir solo valores numéricos. Si se detecta un valor no numérico, la biblioteca devuelve un error. También se cancela la ejecución del envío del formulario.
  • Validación de longitud: algunos tipos de datos requieren que los campos tengan un cierto número mínimo o máximo de caracteres. La biblioteca de validación resulta útil en tales casos.
  • Saneamiento de datos: la biblioteca de validación también tiene capacidades que eliminan el código malicioso de los datos enviados por razones de seguridad. Si, por ejemplo, los valores enviados tienen código JavaScript o inyección SQL activo, la biblioteca de validación elimina el código dañino y lo vuelve inútil.
  • Valide campos únicos de la base de datos: suponga que tiene un formulario en el que los usuarios se registran mediante un correo electrónico.mail DIRECCIÓN. Usted querrá asegurarse de que el email La dirección es única. La biblioteca le facilita comparar los datos enviados con una tabla y un campo de la base de datos. Esto le permite saber que el valor ya ha sido tomado.

Las reglas de validación se establecen usando lo siguientewing formato

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

AQUÍ,

  • 'campo' especificaba el nombre del campo del formulario que la biblioteca validaría
  • 'humano readable campo' especifica elreadable formato del campo bajo validación. Esta es la pantalla.yed de vuelta al usuario cuando ocurre un error.
  • 'regla' especifica la regla de validación que se aplicará, como requerida, numérica, verificar si la longitud mínima es... etc.
  • ['mensaje personalizado'] es opcional y se puede utilizar para establecer un mensaje de validación personalizado que se debe mostrar.yed cuando falla la regla de validación.

Following es un formulario enviado en el ejemplo de CodeIgniter para validar el nombre del contacto

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

AQUÍ,

  • El código anterior verifica si se ha ingresado el campo número_contacto. Si no está configurado, se devuelve un error que dice que el campo Número de contacto es obligatorio.

Para ejecutar la validación según las reglas establecidas, utilizamos lo siguientewing función de la biblioteca de validación

$this->form_validation->run()

Si el código anterior devuelve falso, entonces una o más reglas establecidas han fallado. Si devuelve verdadero, entonces todas las reglas de validación han pasado y puede continuar con otras acciones.

Veamos más ejemplos de reglas de validación. Supongamos que desea validar algunos campos que dicen el nombre del contacto, el número y la dirección electrónica.mail dirección, puede utilizar el siguientewing código para lograr eso.

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

AQUÍ,

  • En el e anteriormail En el ejemplo de validación de CodeIgniter, proporcionamos una serie de campos con reglas para la función set_rules de la biblioteca. Esto hace que sea más fácil cuando estás validando algunos campos.

Validación única

Si queremos validar el número de contacto para asegurarnos de no guardar el mismo número dos veces, podemos utilizar el siguientewing regla para hacer eso.

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

AQUÍ,

  • | se utiliza para canalizar varias reglas juntas
  • is_unique[contacts.contact_number] comprueba si el valor de contact_number es único con respecto a los valores del campo contact_number en la tabla de contactos de la base de datos.

Mostrar mensajes de error de validación de formulario

Si ocurre un error durante el procesamiento del formulario, puede utilizar el siguientewing código para mostrar los errores de validación que ocurrieron

<?php echo validation_errors(); ?>

AQUÍ,

  • La función anterior devuelve todos los errores que ocurrieron.

Completar los datos del formulario enviado: formularios fijos

Algunos formularios tienen muchos campos y, si se ha producido un error, querrás asegurarte de que se conserven los datos que se agregaron correctamente. La biblioteca de validación tiene mecanismos para lograrlo. Lo hacemos usando el siguientewing código.

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

AQUÍ,

  • El código anterior muestra la entrada que el usuario había ingresado.

Para obtener una guía de referencia completa sobre los métodos que están disponibles en la biblioteca de validación, puede consultar la documentación de la API en la guía del usuario oficial de CodeIgniter.

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

Ejemplo de validación de formulario de CodeIgniter

A lo largo de esta serie de tutoriales, hemos agregado más código a nuestro proyecto de tutorial, que es una aplicación de administración de contactos. En esta sección, cargaremos la biblioteca de validación y veremos cómo podemos darle un uso práctico utilizando una aplicación de ejemplo del mundo real.

Modifique el código de rutas de la siguiente manera para incluir el método de tienda

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

Ahora carguemos la biblioteca de validación de formularios en el controlador de Contactos y establezcamos algunas reglas de validación.

Modifique el código como se muestra en la siguiente validación del formulario en el ejemplo de 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');
    }
}

AQUÍ,

  • $rules = array(…) sets define las reglas de validación
  • $this->form_validation->set_rules($reglas); establece las reglas de validación
  • if ($this->form_validation->run() == FALSE) {…} ejecuta las reglas de validación y si fallan, el formulario se vuelve a mostraryed con errores de validación. Si la validación pasa, simplemente estamos redirigiendo a la página de la lista de contactos. En circunstancias normales escribiríamos los datos en la base de datos. Lo haremos en los próximos tutoriales cuando veamos bases de datos.

Modifique la vista de creación en el código application/contacts/create.php como se muestra en el siguiente ejemplo de validación de formulario de 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>

AQUÍ,

  • mostramos los errores que ocurren si los hay durante el proceso de validación
  • establece el valor que se estableció previamente, si lo hubiera

Necesitas cargar el siguientewing URL en su navegador web. Luego haga clic en Crear contacto sin ingresar ningún valor

Validación del formulario CodeIgniter

Resumen

  • Los formularios proporcionan una manera para que los usuarios interactúen con la aplicación y envíen datos.
  • HTML es excelente, fácil de entender y escribir, pero CodeIgniter simplifica aún más las cosas. CodeIgniter tiene funciones integradas para crear formularios HTML.
  • La validación juega un papel muy crítico al procesar datos de formularios.
  • En este tutorial, hemos visto las principales estrategias de validación y sus ventajas y desventajas. También aprendimos cómo establecer reglas de validación y eliminar mensajes de error utilizando la biblioteca de validación incorporada de CodeIgniter. Hemos finalizado la lección implementando los conocimientos adquiridos en una aplicación práctica.