CodeIgniter - Guía rápida

CodeIgniter es un marco de desarrollo de aplicaciones, que se puede utilizar para desarrollar sitios web, utilizando PHP. Es un marco de código abierto. Tiene un conjunto de funcionalidades muy rico, que aumentará la velocidad del trabajo de desarrollo del sitio web.

Si conoce bien PHP, CodeIgniter facilitará su tarea. Tiene un conjunto muy rico de bibliotecas y ayudantes. Al usar CodeIgniter, ahorrará mucho tiempo si está desarrollando un sitio web desde cero. No solo eso, un sitio web construido en CodeIgniter también es seguro, ya que tiene la capacidad de prevenir varios ataques que tienen lugar a través de sitios web.

Funciones de CodeIgniter

Algunas de las características importantes de CodeIgniter se enumeran a continuación:

  • Sistema basado en modelo-vista-controlador

  • Peso extremadamente ligero

  • Clases de bases de datos con todas las funciones con soporte para varias plataformas.

  • Soporte de base de datos del generador de consultas

  • Validación de formularios y datos

  • Seguridad y filtrado XSS

  • Gestión de sesiones

  • Clase de envío de correo electrónico. Admite archivos adjuntos, correo electrónico HTML / de texto, múltiples protocolos (sendmail, SMTP y Mail) y más.

  • Biblioteca de manipulación de imágenes (recorte, cambio de tamaño, rotación, etc.). Admite GD, ImageMagick y NetPBM

  • Clase de carga de archivos

  • Clase FTP

  • Localization

  • Pagination

  • Cifrado de datos

  • Benchmarking

  • Almacenamiento en caché de página completa

  • Registro de errores

  • Perfiles de aplicaciones

  • Clase de calendario

  • Clase de agente de usuario

  • Clase de codificación postal

  • Clase de motor de plantilla

  • Clase Trackback

  • Biblioteca XML-RPC

  • Clase de prueba unitaria

  • URL amigables para motores de búsqueda

  • Enrutamiento URI flexible

  • Soporte para Hooks y extensiones de clase

  • Gran biblioteca de funciones de "ayuda"

Es muy fácil instalar CodeIgniter. Simplemente siga los pasos que se indican a continuación:

  • Step-1- Descarga CodeIgniter desde el enlace CodeIgniter

  • Step-2 - Descomprime la carpeta.

  • Step-3 - Sube todos los archivos y carpetas a tu servidor.

  • Step-4 - Después de cargar todos los archivos en su servidor, visite la URL de su servidor, por ejemplo, www.domain-name.com.

Al visitar la URL, verá la siguiente pantalla:

La arquitectura de la aplicación CodeIgniter se muestra a continuación.

  • Como se muestra en la figura, siempre que llegue una solicitud a CodeIgniter, primero irá a index.php página.

  • En el segundo paso, Routing decidirá si pasar esta solicitud al paso 3 para el almacenamiento en caché o pasar esta solicitud al paso 4 para la verificación de seguridad.

  • Si la página solicitada ya está en Caching, luego Routing pasará la solicitud al paso 3 y la respuesta volverá al usuario.

  • Si la página solicitada no existe en Caching, luego Routing pasará la página solicitada al paso 4 para Security cheques.

  • Antes de pasar la solicitud a Application Controller, la Securityde los datos enviados. Después de laSecurity comprobar el Application Controller cargas necesarias Models, Libraries, Helpers, Plugins y Scripts y pasarlo a View.

  • los View renderizará la página con los datos disponibles y la pasará por Caching. Como la página solicitada no se almacenó en caché antes, esta vez se almacenará en cachéCaching, para procesar esta página rápidamente para futuras solicitudes.

Estructura de directorios

La imagen que se muestra a continuación muestra la estructura de directorios de CodeIgniter.

La estructura de directorios de CodeIgniter se divide en 3 carpetas:

  • Application
  • System
  • User_guide

Solicitud

Como su nombre indica, la carpeta de la aplicación contiene todo el código de la aplicación que está creando. Esta es la carpeta donde desarrollarás tu proyecto. La carpeta Aplicación contiene varias otras carpetas, que se explican a continuación:

  • Cache- Esta carpeta contiene todas las páginas en caché de su aplicación. Estas páginas en caché aumentarán la velocidad general de acceso a las páginas.

  • Config- Esta carpeta contiene varios archivos para configurar la aplicación. Con la ayuda deconfig.phparchivo, el usuario puede configurar la aplicación. Utilizandodatabase.php archivo, el usuario puede configurar la base de datos de la aplicación.

  • Controllers- Esta carpeta contiene los controladores de su aplicación. Es la parte básica de tu aplicación.

  • Core - Esta carpeta contendrá la clase base de su aplicación.

  • Helpers - En esta carpeta, puede poner la clase auxiliar de su aplicación.

  • Hooks - Los archivos de esta carpeta proporcionan un medio para acceder y modificar el funcionamiento interno del marco sin piratear los archivos principales.

  • Language - Esta carpeta contiene archivos relacionados con el idioma.

  • Libraries - Esta carpeta contiene archivos de las bibliotecas desarrolladas para su aplicación.

  • Logs - Esta carpeta contiene archivos relacionados con el registro del sistema.

  • Models - El inicio de sesión de la base de datos se colocará en esta carpeta.

  • Third_party - En esta carpeta, puede colocar cualquier complemento, que se utilizará para su aplicación.

  • Views - Los archivos HTML de la aplicación se colocarán en esta carpeta.

Sistema

Esta carpeta contiene códigos centrales, bibliotecas, ayudantes y otros archivos de CodeIgniter, que ayudan a facilitar la codificación. Estas bibliotecas y ayudantes se cargan y utilizan en el desarrollo de aplicaciones web.

Esta carpeta contiene todo el código de consecuencia de CodeIgniter, organizado en varias carpetas:

  • Core- Esta carpeta contiene la clase principal de CodeIgniter. No modifique nada aquí. Todo su trabajo se llevará a cabo en la carpeta de la aplicación. Incluso si su intención es extender el núcleo de CodeIgniter, debe hacerlo con ganchos, y los ganchos se encuentran en la carpeta de la aplicación.

  • Database - La carpeta de la base de datos contiene los controladores de la base de datos y otras utilidades de la base de datos.

  • Fonts - La carpeta de fuentes contiene información y utilidades relacionadas con las fuentes.

  • Helpers - La carpeta de ayudantes contiene ayudantes de CodeIgniter estándar (como ayudantes de fecha, cookies y URL).

  • Language- La carpeta de idioma contiene archivos de idioma. Puedes ignorarlo por ahora.

  • Libraries- La carpeta de bibliotecas contiene bibliotecas CodeIgniter estándar (para ayudarlo con el correo electrónico, calendarios, carga de archivos y más). Puede crear sus propias bibliotecas o ampliar (e incluso reemplazar) las estándar, pero esas se guardarán en elapplication/libraries directorio para mantenerlos separados de las bibliotecas CodeIgniter estándar guardadas en esta carpeta en particular.

Guía del usuario

Esta es su guía de usuario de CodeIgniter. Básicamente, es la versión sin conexión de la guía del usuario en el sitio web de CodeIgniter. Usando esto, uno puede aprender las funciones de varias bibliotecas, ayudantes y clases. Se recomienda leer esta guía del usuario antes de crear su primera aplicación web en CodeIgniter.

Además de estas tres carpetas, hay un archivo más importante llamado "index.php”. En este archivo, podemos establecer el entorno de la aplicación y el nivel de error y podemos definir el sistema y el nombre de la carpeta de la aplicación. Se recomienda no editar esta configuración si no tiene suficiente conocimiento sobre lo que va a hacer.

CodeIgniter se basa en Model-View-Controller (MVC) development pattern. MVC es un enfoque de software que separa la lógica de la aplicación de la presentación. En la práctica, permite que sus páginas web contengan un mínimo de secuencias de comandos, ya que la presentación es independiente de las secuencias de comandos PHP.

  • los Modelrepresenta sus estructuras de datos. Normalmente, sus clases de modelo contendrán funciones que le ayudarán a recuperar, insertar y actualizar información en su base de datos.

  • los Viewes información que se le presenta a un usuario. Una vista normalmente será una página web, pero en CodeIgniter, una vista también puede ser un fragmento de página como un encabezado o pie de página. También puede ser una página RSS o cualquier otro tipo de “página”.

  • los Controller sirve como intermediario entre el modelo, la vista y cualquier otro recurso necesario para procesar la solicitud HTTP y generar una página web.

Controladores

Un controlador es un archivo de clase simple. Como sugiere el nombre, controla toda la aplicación mediante URI.

Crear un controlador

Primero, ve a application/controllerscarpeta. Encontrarás dos archivos allí,index.html y Welcome.php. Estos archivos vienen con CodeIgniter.

Conserve estos archivos como están. Cree un nuevo archivo con la misma ruta denominada "Test.php”. Escriba el siguiente código en ese archivo:

<?php 
   class Test extends CI_Controller {
  
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>

los Test class extiende una clase incorporada llamada CI_Controller. Esta clase debe ampliarse siempre que desee crear su propia clase de controlador.

Llamar a un controlador

El controlador anterior puede ser llamado por URI de la siguiente manera:

http://www.your-domain.com/index.php/test

Note la palabra "test”En el URI anterior después de index.php. Esto indica el nombre de clase del controlador. Como hemos dado el nombre del controlador "Test", Estamos escribiendo "test”Después de index.php. El nombre de la clase debe comenzar conuppercase letter pero tenemos que escribir lowercase lettercuando llamamos a ese controlador por URI. La sintaxis general para llamar al controlador es la siguiente:

http://www.your-domain.com/index.php/controller/method-name

Crear y llamar al método de constructor

Modifiquemos la clase anterior y creemos otro método llamado "hola".

<?php 
   class Test extends CI_Controller {  
	
      public function index() { 
         echo "This is default function."; 
      } 
  
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

Podemos ejecutar el controlador anterior de las siguientes tres formas:

  • http://www.your-domain.com/index.php/test
  • http://www.your-domain.com/index.php/test/index
  • http://www.your-domain.com/index.php/test/hello

Después de visitar el primer URI en el navegador, obtenemos el resultado como se muestra en la imagen que se muestra a continuación. Como puede ver, obtuvimos el resultado del método "index”, Aunque no pasamos el nombre del método la URI. Hemos utilizado solo el nombre del controlador en el URI. En tales situaciones, CodeIgniter llama al método predeterminado "index”.

Al visitar el segundo URI en el navegador, obtenemos el mismo resultado que se muestra en la imagen de arriba. Aquí, hemos pasado el nombre del método después del nombre del controlador en el URI. Como el nombre del método es "index”, Estamos obteniendo el mismo resultado.

Al visitar el tercer URI en el navegador, obtenemos el resultado como se muestra en la imagen que se muestra a continuación. Como puede ver, estamos obteniendo el resultado del método "hello"Porque hemos pasado"hello"Como el nombre del método, después del nombre del controlador"test”En la URI.

Puntos para recordar

  • El nombre de la clase de controlador debe comenzar con una letra mayúscula.

  • El controlador debe llamarse con letra minúscula.

  • No use el mismo nombre del método que su clase principal, ya que anulará la funcionalidad de la clase principal.

Puntos de vista

Esta puede ser una página web simple o compleja, a la que puede llamar el controlador. La página web puede contener encabezado, pie de página, barra lateral, etc. No se puede llamar a la vista directamente. Creemos una vista simple. Cree un nuevo archivo enapplication/views con nombre "test.php”Y copie el código que se proporciona a continuación en ese archivo.

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Cambiar el código de application/controllers/test.php archivo como se muestra a continuación.

Cargando la vista

La vista se puede cargar con la siguiente sintaxis:

$this->load->view('name');

Donde nombre es el archivo de vista que se está procesando. Si ha planeado almacenar el archivo de vista en algún directorio, puede usar la siguiente sintaxis:

$this->load->view('directory-name/name');

No es necesario especificar la extensión como php, a menos que se use algo diferente a .php.

El método index () llama al método view y pasa la "prueba" como argumento al método view () porque hemos almacenado la codificación html en "test.php"Archivo bajo application/views/test.php.

<?php 
   class Test extends CI_Controller { 
	
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>

Aquí está la salida del código anterior:

El siguiente diagrama de flujo ilustra cómo funciona todo:

Modelos

Las clases de modelos están diseñadas para trabajar con información en la base de datos. Por ejemplo, si está utilizando CodeIgniter para administrar usuarios en su aplicación, entonces debe tener una clase de modelo, que contiene funciones para insertar, eliminar, actualizar y recuperar los datos de sus usuarios.

Crear clase de modelo

Las clases de modelo se almacenan en application/modelsdirectorio. El siguiente código muestra cómo crear una clase de modelo en CodeIgniter.

<?php 
   Class Model_name extends CI_Model { 
	
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

Donde Model_name es el nombre de la clase de modelo que desea dar. Cada clase de modelo debe heredar la clase CI_Model de CodeIgniter. La primera letra de la clase modelo debe estar en mayúscula. A continuación se muestra el código para la clase de modelo de los usuarios.

<?php 
   Class User_model extends CI_Model {
	
      Public function __construct() { 
         parent::__construct(); 
      } 
		
   } 
?>

La clase de modelo anterior debe guardarse como User_model.php. El nombre de la clase y el nombre del archivo deben ser iguales.

Modelo de carga

El modelo se puede llamar en el controlador. El siguiente código se puede utilizar para cargar cualquier modelo.

$this->load->model('model_name');

Donde model_name es el nombre del modelo que se cargará. Después de cargar el modelo, simplemente puede llamar a su método como se muestra a continuación.

$this->model_name->method();

Modelos de carga automática

Puede haber situaciones en las que desee alguna clase de modelo en su aplicación. En tales situaciones, es mejor si lo cargamos automáticamente.

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first'); */ $autoload['model'] = array();

Como se muestra en la figura anterior, pase el nombre del modelo en la matriz que desea cargar automáticamente y se cargará automáticamente, mientras que el sistema está en estado de inicialización y es accesible en toda la aplicación.

Ayudantes

Como sugiere su nombre, le ayudará a construir su sistema. Está dividido en pequeñas funciones para servir diferentes funcionalidades. Hay varios ayudantes disponibles en CodeIgniter, que se enumeran en la tabla siguiente. También podemos construir nuestros propios ayudantes.

Los ayudantes normalmente se almacenan en su system/helperso application/helpers directory. Los ayudantes personalizados se almacenan enapplication/helpers Los ayudantes de directorio y sistemas se almacenan en system/helpersdirectorio. CodeIgniter buscará primero en suapplication/helpers directory. Si el directorio no existe o no se encuentra el ayudante especificado, CodeIgniter buscará en su globalsystem/helpers/ directory. Cada asistente, ya sea personalizado o del sistema, debe cargarse antes de usarlo.

SN Nombre y descripción del ayudante
1

Array Helper

El archivo Array Helper contiene funciones que ayudan a trabajar con matrices.

2

CAPTCHA Helper

El archivo CAPTCHA Helper contiene funciones que ayudan a crear imágenes CAPTCHA.

3

Cookie Helper

El archivo Cookie Helper contiene funciones que ayudan a trabajar con cookies.

4

Date Helper

El archivo Asistente de fecha contiene funciones que le ayudan a trabajar con fechas.

5

Directory Helper

El archivo Directory Helper contiene funciones que ayudan a trabajar con directorios.

6

Download Helper

Download Helper le permite descargar datos a su escritorio.

7

Email Helper

El Asistente de correo electrónico proporciona algunas funciones de asistencia para trabajar con el correo electrónico. Para una solución de correo electrónico más sólida, consulte la Clase de correo electrónico de CodeIgniter.

8

File Helper

El archivo File Helper contiene funciones que ayudan a trabajar con archivos.

9

Form Helper

El archivo Form Helper contiene funciones que ayudan a trabajar con formularios.

10

HTML Helper

El archivo HTML Helper contiene funciones que ayudan a trabajar con HTML.

11

Inflector Helper

El archivo Inflector Helper contiene funciones que le permiten cambiar palabras a plural, singular, mayúsculas y minúsculas, etc.

12

Language Helper

El archivo Language Helper contiene funciones que ayudan a trabajar con archivos de idioma.

13

Number Helper

El archivo Number Helper contiene funciones que le ayudan a trabajar con datos numéricos.

14

Path Helper

El archivo Path Helper contiene funciones que le permiten trabajar con rutas de archivo en el servidor.

15

Security Helper

El archivo Security Helper contiene funciones relacionadas con la seguridad.

dieciséis

Smiley Helper

El archivo Smiley Helper contiene funciones que le permiten administrar emoticonos (emoticonos).

17

String Helper

El archivo String Helper contiene funciones que ayudan a trabajar con cadenas.

18

Text Helper

El archivo de ayuda de texto contiene funciones que ayudan a trabajar con texto.

19

Typography Helper

El archivo Typography Helper contiene funciones que ayudan a formatear el texto de formas semánticamente relevantes.

20

URL Helper

El archivo URL Helper contiene funciones que ayudan a trabajar con URL.

21

XML Helper

El archivo XML Helper contiene funciones que ayudan a trabajar con datos XML.

Cargando un ayudante

Se puede cargar un ayudante como se muestra a continuación:

$this->load->helper('name');

Donde nombre es el nombre del ayudante. Por ejemplo, si desea cargar URL Helper, puede cargarlo como:

$this->load->helper('url');

Enrutamiento

CodeIgniter tiene un sistema de enrutamiento URI fácil de usar, para que pueda redirigir fácilmente la URL. Por lo general, existe una relación de uno a uno entre una cadena de URL y su clase / método de controlador correspondiente. Los segmentos de un URI normalmente siguen este patrón:

your-domain.com/class/method/id/
  • los first segment representa la clase de controlador que debe invocarse.

  • los second segment representa la función o método de clase que se debe llamar.

  • los third, y cualquier segmento adicional, representan el ID y cualquier variable que se pasará al controlador.

En algunas situaciones, es posible que desee cambiar este mecanismo de enrutamiento predeterminado. CodeIgniter proporciona una facilidad a través de la cual puede establecer sus propias reglas de enrutamiento.

Personalizar reglas de enrutamiento

Hay un archivo en particular donde puede manejar todos estos. El archivo se encuentra en application / config / routes.php. Encontrarás una matriz llamada$route in which you can customize your routing rules. The key in the $route array decidirá qué enrutar y el valor decidirá dónde enrutar. Hay tres rutas reservadas en CodeIgniter.

SN Rutas reservadas y descripción
1

$route['default_controller']

Esta ruta indica qué clase de controlador debe cargarse, si el URI no contiene datos, que será el caso cuando las personas carguen su URL raíz. Se le anima a tener una ruta predeterminada; de lo contrario, aparecerá una página 404 de forma predeterminada. Podemos configurar la página de inicio del sitio web aquí para que se cargue de forma predeterminada.

2

$route['404_override']

Esta ruta indica qué clase de controlador debe cargarse si no se encuentra el controlador solicitado. Anulará la página de error 404 predeterminada. No afectará alshow_404() función, que continuará cargando el predeterminado error_404.php presentar en application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

Como es evidente por el valor booleano, esta no es exactamente una ruta. Esta opción le permite reemplazar automáticamente los guiones ('-') con guiones bajos en los segmentos de URI del método y del controlador, lo que le permite ahorrar entradas de ruta adicionales si es necesario. Esto es necesario porque el guión no es una clase válida o un carácter de nombre de método y provocará un error fatal si intenta utilizarlo.

Las rutas se pueden personalizar mediante wildcards o usando regular expressions pero tenga en cuenta que estas reglas personalizadas para el enrutamiento deben ir después de las reglas reservadas.

Comodines

Podemos usar dos caracteres comodín como se explica a continuación:

  • (:num) - Coincidirá con un segmento que contenga solo números.

  • (:any) - Coincidirá con un segmento que contenga cualquier carácter.

Example

$route['product/:num']='catalog/product_lookup';

En el ejemplo anterior, si la palabra literal "producto" se encuentra en el primer segmento de la URL y se encuentra un número en el segundo segmento, se utilizan en su lugar la clase "catálogo" y el método "product_lookup".

Expresiones regulares

Como los comodines, también podemos usar expresiones regulares en $route array keyparte. Si algún URI coincide con una expresión regular, se enrutará a la parte de valor establecida en la matriz $ route.

Example

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

En el ejemplo anterior, un URI similar a products / shoes / 123 llamaría en su lugar al "shoes"Clase de controlador y el"id_123”Método.

Después de configurar el sitio, lo siguiente que debemos hacer es configurar el sitio. La carpeta application / config contiene un grupo de archivos que establecen la configuración básica de su sitio.

Configurar URL base

La URL base del sitio se puede configurar en el archivo application / config / config.php. Es la URL de la raíz de CodeIgniter. Normalmente, esta será su URL base, con una barra al final, por ejemplo

http://example.com/

Si no está configurado, CodeIgniter intentará adivinar el protocolo, el dominio y la ruta de su instalación. Sin embargo, siempre debe configurar esto de forma explícita y nunca confiar en el autogues, especialmente en entornos de producción. Puede configurar la URL base en la matriz $ config con la clave "base_url" como se muestra a continuación:

$config['base_url'] = 'http://your-domain.com';

Configuración de la base de datos

La base de datos del sitio se puede configurar en el archivo application / config / database.php. A menudo, necesitamos configurar una base de datos para diferentes entornos como el desarrollo y la producción. Con la matriz multidimensional proporcionada en CodeIgniter, podemos configurar la base de datos para diferentes entornos. Los ajustes de configuración se almacenan en la matriz como se muestra a continuación:

$db['default'] = array( 
   'dsn'   => '', 
   'hostname' => 'localhost', 
   'username' => 'root', 
   'password' => '', 
   'database' => 'database_name', 
   'dbdriver' => 'mysqli', 
   'dbprefix' => '', 
   'pconnect' => TRUE, 
   'db_debug' => TRUE, 
   'cache_on' => FALSE, 
   'cachedir' => '', 
   'char_set' => 'utf8', 
   'dbcollat' => 'utf8_general_ci',
   'swap_pre' => '', 
   'encrypt' => FALSE, 
   'compress' => FALSE, 
   'stricton' => FALSE, 
   'failover' => array() 
);

Puede dejar algunas opciones a sus valores predeterminados, excepto el nombre de host, nombre de usuario, contraseña, base de datos y dbdriver.

  • hostname - Especifique la ubicación de su base de datos aquí, por ejemplo, localhost o dirección IP

  • username - Establezca el nombre de usuario de su base de datos aquí.

  • password - Establezca aquí la contraseña de su base de datos.

  • database - Establezca aquí el nombre de la base de datos.

  • dbdriver - Establezca el tipo de base de datos que está utilizando, por ejemplo, MySQL, MySQLi, Postgre SQL, ODBC y MS SQL.

Cambiando la clave de la matriz $db, puede establecer otra configuración de base de datos como se muestra a continuación. Aquí, hemos establecido la clave para‘test’ para configurar la base de datos para el entorno de prueba, manteniendo el otro entorno de la base de datos como está.

$db['test'] = array( 
   'dsn'   => '', 
   'hostname' => 'localhost', 
   'username' => 'root', 
   'password' => '', 
   'database' => 'database_name', 
   'dbdriver' => 'mysqli', 
   'dbprefix' => '', 
   'pconnect' => TRUE, 
   'db_debug' => TRUE, 
   'cache_on' => FALSE, 
   'cachedir' => '', 
   'char_set' => 'utf8', 
   'dbcollat' => 'utf8_general_ci', 
   'swap_pre' => '', 
   'encrypt' => FALSE, 
   'compress' => FALSE, 
   'stricton' => FALSE, 
   'failover' => array()
);

Simplemente puede cambiar a un entorno diferente cambiando el valor de una variable como se muestra a continuación:

$active_group = ‘default’; //This will set the default environment

$active_group = ‘test’; //This will set the test environment

Configuración de carga automática

Este archivo especifica, de forma predeterminada, qué sistemas deben cargarse. Para mantener el marco lo más ligero posible, solo los recursos mínimos absolutos se cargan de forma predeterminada. Se debe cargar automáticamente el sistema de uso frecuente, en lugar de cargarlo a nivel local, repetidamente. A continuación se muestran las cosas que puede cargar automáticamente:

  • Libraries- Es una lista de bibliotecas, que debe cargarse automáticamente. Proporcione una lista de bibliotecas en una matriz como se muestra a continuación para que CodeIgniter las cargue automáticamente. En este ejemplo, estamos cargando automáticamente la base de datos, el correo electrónico y las bibliotecas de sesiones.

$autoload['libraries'] = array('database', 'email', 'session');
  • Drivers- Estas clases están ubicadas en system / libraries / o en su directorio application / libraries /, pero también están ubicadas dentro de su propio subdirectorio y extienden la clase CI_Driver_Library. Ofrecen múltiples opciones de controladores intercambiables. A continuación, se muestra un ejemplo de carga automática de controladores de caché.

$autoload['drivers'] = array('cache');
  • Helper files- Es una lista de archivos auxiliares que se cargan automáticamente. Proporcione una lista de bibliotecas en la matriz, como se muestra a continuación, para que CodeIgniter las cargue automáticamente. En el ejemplo dado, estamos cargando automáticamente URL y ayudantes de archivos.

$autoload['helper'] = array('url', 'file');
  • Custom config files- Estos archivos están diseñados para su uso, solo si ha creado archivos de configuración personalizados. De lo contrario, déjelo en blanco. A continuación se muestra un ejemplo de cómo cargar automáticamente más de un archivo de configuración.

$autoload['config'] = array('config1', 'config2');
  • Language files- Es una lista de archivos de idioma, que deben cargarse automáticamente. Mira el ejemplo que se da a continuación. Proporcione una lista de idiomas en una matriz como se muestra a continuación para que CodeIgniter la cargue automáticamente. Tenga en cuenta que no incluya la parte "_lang" de su archivo. Por ejemplo, "codeigniter_lang.php" sería referenciado como array ('codeigniter');

  • Models- Es un archivo de lista de modelos, que debe cargarse automáticamente. Proporcione una lista de modelos en una matriz como se muestra a continuación para que CodeIgniter los cargue automáticamente. A continuación se muestra el ejemplo de cómo cargar automáticamente más de un archivo de modelo.

$autoload['model'] = array('first_model', 'second_model');

Como cualquier otro marco, necesitamos interactuar con la base de datos con mucha frecuencia y CodeIgniter nos facilita este trabajo. Proporciona un amplio conjunto de funcionalidades para interactuar con la base de datos.

En esta sección, entenderemos cómo funcionan las funciones CRUD (Crear, Leer, Actualizar, Eliminar) con CodeIgniter. Usaremosstud tabla para seleccionar, actualizar, eliminar e insertar los datos en stud mesa.

Nombre de la tabla: perno prisionero
roll_no int (11)
nombre varchar (30)

Conectarse a una base de datos

Podemos conectarnos a la base de datos de las siguientes dos formas:

  • Automatic Connecting- La conexión automática se puede realizar utilizando el archivo application / config / autoload.php. La conexión automática cargará la base de datos para todas y cada una de las páginas. Solo necesitamos agregar la biblioteca de la base de datos como se muestra a continuación:

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Si desea conectividad de base de datos solo para algunas de las páginas, podemos optar por la conexión manual. Podemos conectarnos a la base de datos manualmente agregando la siguiente línea en cualquier clase.

$this->load->database();

Aquí, no estamos pasando ningún argumento porque todo está configurado en el archivo de configuración de la base de datos application / config / database.php

Insertar un registro

Para insertar un registro en la base de datos, se utiliza la función insert () como se muestra en la siguiente tabla:

Syntax

insert ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]])

Parameters

  • $table( cadena ): nombre de la tabla

  • $set( matriz ): una matriz asociativa de pares de campo / valor

  • $escape( bool ): si se deben escapar los valores y los identificadores

Returns

VERDADERO en caso de éxito, FALSO en caso de fracaso

Return Type

bool

El siguiente ejemplo muestra cómo insertar un registro en studmesa. $ Data es una matriz en la que hemos establecido los datos y para insertar estos datos en la tablastud, Sólo tenemos que pasar esta matriz a la función de inserción en el 2 nd argumento.

$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data);

Actualizar un registro

Para actualizar un registro en la base de datos, el update() La función se usa junto con set() y where()funciona como se muestra en las tablas siguientes. losset() La función establecerá los datos que se actualizarán.

Syntax

set ( $ clave [, $ valor = '' [, $ escape = NULL ]])

Parameters

  • $key( mixto ): nombre de campo o una matriz de pares de campo / valor

  • $value( cadena ): valor del campo, si $ key es un solo campo

  • $escape( bool ): si se deben escapar los valores y los identificadores

Returns

Instancia de CI_DB_query_builder (encadenamiento de métodos)

Return Type

CI_DB_query_builder

los where() La función decidirá qué registro actualizar.

Syntax

donde ( $ clave [, $ valor = NULL [, $ escape = NULL ]])

Parameters

  • $key( mixto ): nombre del campo para comparar o matriz asociativa

  • $value( mixto ): si es una sola clave, en comparación con este valor

  • $escape( bool ): si se deben escapar los valores y los identificadores

Returns

Instancia de DB_query_builder

Return Type

objeto

Finalmente, el update() La función actualizará los datos en la base de datos.

Syntax

actualizar ([ $ tabla = '' [, $ conjunto = NULL [,$where = NULL[, $límite = NULO ]]]])

Parameters

  • $table( cadena ): nombre de la tabla

  • $set( matriz ): una matriz asociativa de pares de campo / valor

  • $where( cadena ) - La cláusula WHERE

  • $limit( int ) - La cláusula LIMIT

Returns

VERDADERO en caso de éxito, FALSO en caso de fracaso

Return Type

bool
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->set($data); $this->db->where("roll_no", ‘1’); 
$this->db->update("stud", $data);

Eliminar un registro

Para eliminar un registro en la base de datos, la función delete () se usa como se muestra en la siguiente tabla:

Syntax

eliminar ([ $ tabla = '' [, $ donde = '' [,$limit = NULL[, $reset_data = TRUE ]]]])

Parameters

  • $table( mixto ): la (s) tabla (s) para eliminar; cadena o matriz

  • $where( cadena ) - La cláusula WHERE

  • $limit( int ) - La cláusula LIMIT

  • $reset_data( bool ) - TRUE para restablecer la cláusula "escribir" de la consulta

Returns

Instancia CI_DB_query_builder (encadenamiento de métodos) o FALSE en caso de falla

Return Type

mezclado

Utilice el siguiente código para eliminar un registro en el studmesa. El primer argumento indica el nombre de la tabla para eliminar el registro y el segundo argumento decide qué registro eliminar.

$this->db->delete("stud", "roll_no = 1");

Seleccionar un registro

Para seleccionar un registro en la base de datos, el get se utiliza la función, como se muestra en la siguiente tabla:

Syntax

get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]])

Parameters

  • $table( cadena ): la tabla para consultar la matriz

  • $limit( int ) - La cláusula LIMIT

  • $offset( int ) - La cláusula OFFSET

Returns

Instancia CI_DB_result (encadenamiento de métodos)

Return Type

CI_DB_result

Utilice el siguiente código para obtener todos los registros de la base de datos. La primera declaración obtiene todos los registros de la tabla "stud" y devuelve el objeto, que se almacenará en $ query object. La segunda declaración llama alresult() función con $ query object para obtener todos los registros como matriz.

$query = $this->db->get("stud"); $data['records'] = $query->result();

Cerrar una conexión

La conexión a la base de datos se puede cerrar manualmente, ejecutando el siguiente código:

$this->db->close();

Ejemplo

Crea una clase de controlador llamada Stud_controller.php y guárdalo en application/controller/Stud_controller.php

Aquí hay un ejemplo completo, en el que se realizan todas las operaciones mencionadas anteriormente. Antes de ejecutar el siguiente ejemplo, cree una base de datos y una tabla como se indica al comienzo de este capítulo y realice los cambios necesarios en el archivo de configuración de la base de datos almacenado enapplication/config/database.php

<?php 
   class Stud_controller extends CI_Controller {
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper('url'); $this->load->database(); 
      } 
  
      public function index() { 
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
			
         $this->load->helper('url'); $this->load->view('Stud_view',$data); } public function add_student_view() { $this->load->helper('form'); 
         $this->load->view('Stud_add'); } public function add_student() { $this->load->model('Stud_Model');
			
         $data = array( 'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') ); $this->Stud_Model->insert($data); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); } public function update_student_view() { $this->load->helper('form'); 
         $roll_no = $this->uri->segment('3'); 
         $query = $this->db->get_where("stud",array("roll_no"=>$roll_no)); $data['records'] = $query->result(); $data['old_roll_no'] = $roll_no; $this->load->view('Stud_edit',$data); } public function update_student(){ $this->load->model('Stud_Model');
			
         $data = array( 'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') ); $old_roll_no = $this->input->post('old_roll_no'); $this->Stud_Model->update($data,$old_roll_no); 
			
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function delete_student() { 
         $this->load->model('Stud_Model'); $roll_no = $this->uri->segment('3'); $this->Stud_Model->delete($roll_no); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); 
      } 
   } 
?>

Crea una clase modelo llamada Stud_Model.php y guárdalo en application/models/Stud_Model.php

<?php 
   class Stud_Model extends CI_Model {
	
      function __construct() { 
         parent::__construct(); 
      } 
   
      public function insert($data) { 
         if ($this->db->insert("stud", $data)) { 
            return true; 
         } 
      } 
   
      public function delete($roll_no) { if ($this->db->delete("stud", "roll_no = ".$roll_no)) { return true; } } public function update($data,$old_roll_no) { $this->db->set($data); $this->db->where("roll_no", $old_roll_no); $this->db->update("stud", $data); 
      } 
   } 
?>

Crea un archivo de vista llamado Stud_add.php y guárdalo en application/views/Stud_add.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/add_student');
            echo form_label('Roll No.'); 
            echo form_input(array('id'=>'roll_no','name'=>'roll_no')); 
            echo "<br/>"; 
			
            echo form_label('Name'); 
            echo form_input(array('id'=>'name','name'=>'name')); 
            echo "<br/>"; 
			
            echo form_submit(array('id'=>'submit','value'=>'Add')); 
            echo form_close(); 
         ?> 
		
      </form> 
   </body>
	
</html>

Crea un archivo de vista llamado Stud_edit.php y guárdalo en application/views/Stud_edit.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/update_student'); 
            echo form_hidden('old_roll_no',$old_roll_no); 
            echo form_label('Roll No.'); 
            echo form_input(array('id'⇒'roll_no',
               'name'⇒'roll_no','value'⇒$records[0]→roll_no)); echo " "; echo form_label('Name'); echo form_input(array('id'⇒'name','name'⇒'name', 'value'⇒$records[0]→name)); 
            echo "
            "; 

            echo form_submit(array('id'⇒'sub mit','value'⇒'Edit')); 
            echo form_close();
         ?> 
			
      </form> 
   </body>
	
</html>

Crea un archivo de vista llamado Stud_view.php y guárdalo en application/views/Stud_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head>
	
   <body> 
      <a href = "<?php echo base_url(); ?>
         index.php/stud/add_view">Add</a>
		
      <table border = "1"> 
         <?php 
            $i = 1; echo "<tr>"; echo "<td>Sr#</td>"; echo "<td>Roll No.</td>"; echo "<td>Name</td>"; echo "<td>Edit</td>"; echo "<td>Delete</td>"; echo "<tr>"; foreach($records as $r) { echo "<tr>"; echo "<td>".$i++."</td>"; 
               echo "<td>".$r->roll_no."</td>"; echo "<td>".$r->name."</td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/edit/"
                  .$r->roll_no."'>Edit</a></td>"; echo "<td><a href = '".base_url()."index.php/stud/delete/" .$r->roll_no."'>Delete</a></td>"; 
               echo "<tr>"; 
            } 
         ?>
      </table> 
		
   </body>
	
</html>

Realice el siguiente cambio en el archivo de ruta en application/config/routes.php y agregue la siguiente línea al final del archivo.

$route['stud'] = "Stud_controller"; $route['stud/add'] = 'Stud_controller/add_student'; 
$route['stud/add_view'] = 'Stud_controller/add_student_view'; $route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; $route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1';

Ahora, ejecutemos este ejemplo visitando la siguiente URL en el navegador. Reemplace el yoursite.com con su URL.

http://yoursite.com/index.php/stud

La parte esencial de un marco CodeIgniter son sus bibliotecas. Proporciona un rico conjunto de bibliotecas, que indirectamente aumentan la velocidad de desarrollo de una aplicación. La biblioteca del sistema se encuentra en system / libraries. Todo lo que tenemos que hacer es cargar la biblioteca que queremos usar. La biblioteca se puede cargar como se muestra a continuación:

$this->load->library('class name');

Dónde class namees el nombre de la biblioteca que queremos cargar. Si queremos cargar varias bibliotecas, simplemente podemos pasar una matriz como argumento alibrary() funciona como se muestra a continuación -

$this->load->library(array('email', 'table'));

Clases de biblioteca

Las clases de la biblioteca se encuentran en system/libraries. Cada clase tiene varias funciones para simplificar el trabajo de desarrollo. La siguiente tabla muestra los nombres de la clase de biblioteca y su descripción.

SN Clase y descripción de la biblioteca
1

Benchmarking Class

La clase de evaluación comparativa está siempre activa, lo que permite calcular la diferencia de tiempo entre dos puntos marcados.

2

Caching Class

Esta clase almacenará en caché las páginas para acceder rápidamente a la velocidad de la página.

3

Calendaring Class

Con esta clase, puede crear calendarios de forma dinámica.

4

Shopping Cart Class

Con esta clase, puede agregar o eliminar un artículo del carrito de compras. Los elementos se guardan en sesión y permanecerán activos hasta que el usuario navegue por el sitio.

5

Config Class

Las preferencias de configuración se pueden recuperar utilizando esta clase. Esta clase se inicializa automáticamente.

6

Email Class

Esta clase proporciona funciones relacionadas con el correo electrónico, como enviar o responder correos electrónicos.

7

Encryption Class

Esta clase proporciona una funcionalidad de cifrado de datos bidireccional.

8

File Uploading Class

Esta clase proporciona funcionalidades relacionadas con la carga de archivos. Puede configurar varias preferencias, como el tipo de archivo que se cargará, el tamaño de los archivos, etc.

9

Form Validation Class

Esta clase proporciona varias funciones para validar la forma.

10

FTP Class

Esta clase proporciona varias funciones relacionadas con FTP, como transferir archivos para eliminar el servidor, mover, cambiar el nombre o eliminar archivos en el servidor.

11

Image Manipulation Class

La manipulación de imágenes como cambio de tamaño, creación de miniaturas, recorte, rotación, marca de agua se puede hacer con la ayuda de esta clase.

12

Input Class

Esta clase procesa previamente los datos de entrada por motivos de seguridad.

13

Language Class

Esta clase se utiliza para la internacionalización.

14

Loader Class

Esta clase carga elementos como archivos de visualización, controladores, ayudantes, modelos, etc.

15

Migrations Class

Esta clase proporciona funcionalidades relacionadas con las migraciones de bases de datos.

dieciséis

Output Class

Esta clase envía la salida al navegador y también almacena en caché esa página web.

17

Pagination Class

Esta clase agrega funcionalidades de paginación a la página web.

18

Template Parser Class

La clase de analizador de plantillas puede realizar una sustitución de texto simple para pseudovariables contenidas en sus archivos de vista. Puede analizar variables simples o pares de etiquetas de variables.

19

Security Class

Esta clase contiene funciones relacionadas con la seguridad como filtrado XSS, CSRF, etc.

20

Session Library

Esta clase proporciona funcionalidades para mantener la sesión de su aplicación.

21

HTML Table

Esta clase se utiliza para generar automáticamente tablas HTML a partir de resultados de bases de datos o matrices.

22

Trackback Class

La clase Trackback proporciona funciones que le permiten enviar y recibir datos de Trackback.

23

Typography Class

La clase de tipografía proporciona métodos que ayudan a formatear el texto.

24

Unit Testing Class

Esta clase proporciona funcionalidades para realizar pruebas unitarias de su aplicación y generar el resultado.

25

URI Class

La clase URI proporciona métodos que le ayudan a recuperar información de sus cadenas URI. Si usa el enrutamiento URI, también puede recuperar información sobre los segmentos redirigidos.

26

User Agent Class

La Clase de agente de usuario proporciona funciones que ayudan a identificar información sobre el navegador, dispositivo móvil o robot que visita su sitio. Además, puede obtener información de referencia, así como información sobre el idioma y el juego de caracteres admitidos.

27

XML-RPC and XML-RPC Server Classes

Las clases XML-RPC de CodeIgniter le permiten enviar solicitudes a otro servidor o configurar su propio servidor XML-RPC para recibir solicitudes.

28

Zip Encoding Class

Esta clase se utiliza para crear archivos zip de sus datos.

Creando Bibliotecas

CodeIgniter tiene un amplio conjunto de bibliotecas, que puede encontrar en system/libraries carpeta, pero CodeIgniter no se limita solo a las bibliotecas del sistema, también puede crear sus propias bibliotecas, que se pueden almacenar en application/librariescarpeta. Puede crear bibliotecas de tres formas.

  • Crear nueva biblioteca
  • Amplíe la biblioteca nativa
  • Reemplazar la biblioteca nativa

Crear nueva biblioteca

Al crear una nueva biblioteca, se deben tener en cuenta las siguientes cosas:

  • El nombre del archivo debe comenzar con una letra mayúscula, por ejemplo, Mylibrary.php
  • El nombre de la clase debe comenzar con una letra mayúscula, por ejemplo, class Mylibrary
  • El nombre de la clase y el nombre del archivo deben coincidir.

Mylibrary.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
   
   class Mylibrary {
	
      public function some_function() {
      }
   }
	
/* End of file Mylibrary.php */

Loading the Custom Library

La biblioteca anterior se puede cargar simplemente ejecutando la siguiente línea en su controlador.

$this->load->library(‘mylibrary’);

mylibrary es el nombre de su biblioteca y puede escribirlo tanto en minúsculas como en mayúsculas. Utilice el nombre de la biblioteca sin la extensión ".php". Después de cargar la biblioteca, también puede llamar a la función de esa clase como se muestra a continuación.

$this->mylibrary->some_function();

Amplíe la biblioteca nativa

A veces, es posible que deba agregar su propia funcionalidad a la biblioteca proporcionada por CodeIgniter. CodeIgniter ofrece la posibilidad de ampliar la biblioteca nativa y agregar sus propias funciones. Para lograr esto, debe extender la clase de biblioteca nativa. Por ejemplo, si desea ampliar la biblioteca de correo electrónico, puede hacerlo como se muestra a continuación:

Class MY_Email extends CI_Email { 
}

Aquí, en el ejemplo anterior, la clase MY_Email está ampliando la clase de correo electrónico CI_Email de la biblioteca nativa. Esta biblioteca se puede cargar mediante la forma estándar de cargar la biblioteca de correo electrónico. Guarde el código anterior en el archivo My_Email.php

Reemplazar la biblioteca nativa

En algunas situaciones, no desea utilizar la biblioteca nativa de la forma en que funciona y desea reemplazarla a su manera. Esto se puede hacer reemplazando la biblioteca nativa. Para lograr esto, solo necesita dar el mismo nombre de clase que se nombra en la biblioteca nativa. Por ejemplo, si desea reemplazar elEmail class, luego use el código como se muestra a continuación. Guarde su nombre de archivo conEmail.php y darle un nombre de clase a CI_Email.

Email.php

Class CI_Email { 
}

Muchas veces, al usar la aplicación, nos encontramos con errores. Es muy molesto para los usuarios si los errores no se manejan correctamente. CodeIgniter proporciona un mecanismo de manejo de errores sencillo.

Le gustaría que los mensajes se mostraran cuando la aplicación está en modo de desarrollo en lugar de en modo de producción, ya que los mensajes de error se pueden resolver fácilmente en la etapa de desarrollo.

El entorno de su aplicación se puede cambiar, cambiando la línea que se muestra a continuación de index.phparchivo. Esto se puede establecer en cualquier cosa, pero normalmente hay tres valores (desarrollo, prueba, producción) que se utilizan para este propósito.

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

Un entorno diferente requerirá diferentes niveles de notificación de errores. De forma predeterminada, el modo de desarrollo mostrará errores y pruebas y el modo en vivo los ocultará. CodeIgniter proporciona tres funciones como se muestra a continuación para manejar errores.

  • show_error() La función muestra errores en formato HTML en la parte superior de la pantalla.

Syntax

show_error ( $ mensaje,$status_code, $header = 'Se encontró un error' )

Parameters

  • $message( mixto ) - Mensaje de error

  • $status_code( int ) - Código de estado de respuesta HTTP

  • $heading( cadena ): encabezado de página de error

Return Type

mezclado
  • show_404() La función muestra un error si está intentando acceder a una página que no existe.

Syntax

show_404 ( $ página = '', $ log_error = TRUE )

Parameters

  • $page( cadena ) - cadena URI

  • $log_error( bool ): si se registra el error

Return Type

vacío
  • log_message()La función se utiliza para escribir mensajes de registro. Esto es útil cuando desea escribir mensajes personalizados.

Syntax

log_message ( $ nivel,$message, $php_error = FALSE )

Parameters

  • $level( cadena ) - Nivel de registro: 'error', 'depuración' o 'información'

  • $message( cadena ) - Mensaje para registrar

  • $php_error( bool ): si estamos registrando un mensaje de error de PHP nativo

Return Type

vacío

El registro se puede habilitar en application/config/config.phparchivo. A continuación se muestra la captura de pantalla del archivo config.php, donde puede establecer el valor de umbral.

/*
|--------------------------------------------------------------------------------
|   Error Logging Threshold
|--------------------------------------------------------------------------------
| You can enable error logging by setting a threshold over zero. The 
| threshold determines what gets logged. Threshold options are:
|
|   0 = Disable logging, Error logging TURNED OFF
|   1 = Error Message (including PHP errors)
|   2 = Debug Message
|   3 = Informational Messages
|   4 = All Messages
|
| You can also pass an array with threshold levels to show individual error types
|
|   array(2) = Debug Message, without Error Messages
| For a live site you'll usually only enable Errors (1) to be logged otherwise 
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;

Puede encontrar los mensajes de registro en application/log/. Asegúrese de que se pueda escribir en este directorio antes de habilitar los archivos de registro.

Se pueden encontrar varias plantillas para mensajes de error en application/views/errors/cli o application/views/errors/html.

Usando la clase File Uploading, podemos cargar archivos y también podemos restringir el tipo y tamaño del archivo que se va a cargar. Siga los pasos que se muestran en el ejemplo dado para comprender el proceso de carga de archivos en CodeIgniter.

Ejemplo

Copie el siguiente código y guárdelo en application/view/Upload_form.php.

<html>
 
   <head> 
      <title>Upload Form</title> 
   </head>
	
   <body> 
      <?php echo $error;?> 
      <?php echo form_open_multipart('upload/do_upload');?> 
		
      <form action = "" method = "">
         <input type = "file" name = "userfile" size = "20" /> 
         <br /><br /> 
         <input type = "submit" value = "upload" /> 
      </form> 
		
   </body>
	
</html>

Copie el código que se proporciona a continuación y guárdelo en application/view/Upload_success.php

<html>
 
   <head> 
      <title>Upload Form</title> 
   </head>
	
   <body>  
      <h3>Your file was successfully uploaded!</h3>  
		
      <ul> 
         <?phpforeach ($upload_data as $item => $value):?> 
         <li><?php echo $item;?>: <?php echo $value;?></li> 
         <?phpendforeach; ?>
      </ul>  
		
      <p><?php echo anchor('upload', 'Upload Another File!'); ?></p>  
   </body>
	
</html>

Copie el código que se proporciona a continuación y guárdelo en application/controllers/Upload.php. Crear "uploads”En la raíz de CodeIgniter, es decir, en el directorio principal de la carpeta de la aplicación.

<?php
  
   class Upload extends CI_Controller {
	
      public function __construct() { 
         parent::__construct(); 
         $this->load->helper(array('form', 'url')); } public function index() { $this->load->view('upload_form', array('error' => ' ' )); 
      } 
		
      public function do_upload() { 
         $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; 
         $config['max_size'] = 100; $config['max_width']     = 1024; 
         $config['max_height'] = 768; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('userfile')) {
            $error = array('error' => $this->upload->display_errors()); 
            $this->load->view('upload_form', $error); 
         }
			
         else { 
            $data = array('upload_data' => $this->upload->data()); 
            $this->load->view('upload_success', $data); 
         } 
      } 
   } 
?>

Realice el siguiente cambio en el archivo de ruta en application/config/routes.php y agregue la siguiente línea al final del archivo.

$route['upload'] = 'Upload';

Ahora ejecutemos este ejemplo visitando la siguiente URL en el navegador. Reemplace el yoursite.com con su URL.

http://yoursite.com/index.php/upload

Producirá la siguiente pantalla:

Después de cargar con éxito un archivo, verá la siguiente pantalla:

Enviar correo electrónico en CodeIgniter es mucho más fácil. También configura las preferencias con respecto al correo electrónico en CodeIgniter. CodeIgniter proporciona las siguientes funciones para enviar correos electrónicos:

  • Múltiples protocolos: correo, Sendmail y SMTP
  • Cifrado TLS y SSL para SMTP
  • Varios destinatarios
  • CC y BCC
  • Correo electrónico HTML o de texto sin formato
  • Attachments
  • Ajuste de palabras
  • Priorities
  • Modo BCC Batch, que permite dividir grandes listas de correo electrónico en pequeños lotes BCC.
  • Herramientas de depuración de correo electrónico

La clase de correo electrónico tiene las siguientes funciones para simplificar el trabajo de enviar correos electrónicos.

SN Sintaxis Parámetros Regreso Tipo de retorno
1 from ( $ from [, $ name = '' [, $ return_path = NULL ]])

$from( cadena ): dirección de correo electrónico "De"

$name( cadena ): nombre para mostrar "De"

$return_path( cadena ): dirección de correo electrónico opcional para redirigir el correo electrónico no entregado a

Instancia de CI_Email (encadenamiento de métodos) CI_Email
2 responder_a ( $ responder a [, $ nombre = '' ])

$replyto( cadena ): dirección de correo electrónico para las respuestas

$name( cadena ): nombre para mostrar de la dirección de correo electrónico de respuesta

Instancia de CI_Email (encadenamiento de métodos) CI_Email
2 a ( $ a )

$to( mixto ): cadena delimitada por comas o una matriz de direcciones de correo electrónico

Instancia de CI_Email (encadenamiento de métodos) CI_Email
3 cc ( $ cc )

$cc( mixto ): cadena delimitada por comas o una matriz de direcciones de correo electrónico

Instancia de CI_Email (encadenamiento de métodos) CI_Email
4 bcc ( $ bcc [, $ límite = '' ])

$bcc( mixto ): cadena delimitada por comas o una matriz de direcciones de correo electrónico

$limit( int ): número máximo de correos electrónicos para enviar por lote

Instancia de CI_Email (encadenamiento de métodos) CI_Email
5 asunto ( $ asunto )

$subject( cadena ): línea de asunto del correo electrónico

Instancia de CI_Email (encadenamiento de métodos) CI_Email
6 mensaje ( $ cuerpo )

$body( cadena ): cuerpo del mensaje de correo electrónico

Instancia de CI_Email (encadenamiento de métodos) CI_Email
7 set_alt_message ( $ str )

$str( cadena ): cuerpo del mensaje de correo electrónico alternativo

Instancia de CI_Email (encadenamiento de métodos) CI_Email
8 set_header ( $ encabezado, $ valor )

$header( cadena ): nombre del encabezado

$value( cadena ): valor del encabezado

Instancia de CI_Email (encadenamiento de métodos) CI_Email
9 clear ([ $ clear_attachments = FALSE ])

$clear_attachments( bool ): si se borran o no archivos adjuntos

Instancia de CI_Email (encadenamiento de métodos) CI_Email
10 enviar ([ $ auto_clear = TRUE ])

$auto_clear( bool ): si se borran los datos del mensaje automáticamente

Instancia de CI_Email (encadenamiento de métodos) CI_Email
11 adjuntar ($ nombre de archivo [, $disposition = ''[, $newname = NULL [, $ mime = '']]])

$filename( cadena ): nombre de archivo

$disposition( cadena ) - 'disposición' del adjunto. La mayoría de los clientes de correo electrónico toman sus propias decisiones independientemente de la especificación MIME utilizada aquí. iana

$newname( cadena ): nombre de archivo personalizado para usar en el correo electrónico

$mime( cadena ): tipo MIME para usar (útil para datos almacenados en búfer)

Instancia de CI_Email (encadenamiento de métodos) CI_Email
12 attach_cid ( $ nombre de archivo )

$filename( cadena ): nombre de archivo adjunto existente

Adjunto Content-ID o FALSE si no se encuentra cuerda

Enviando un correo electrónico

Para enviar un correo electrónico usando CodeIgniter, primero debe cargar la biblioteca de correo electrónico usando lo siguiente:

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

Después de cargar la biblioteca, simplemente ejecute las siguientes funciones para configurar los elementos necesarios para enviar un correo electrónico. losfrom() La función se utiliza para configurar: desde dónde se envía el correo electrónico y to()se utiliza la función: a quién se envía el correo electrónico. lossubject() y message() La función se utiliza para establecer el asunto y el mensaje del correo electrónico.

$this->email->from('[email protected]', 'Your Name'); $this->email->to('[email protected]');
 
$this->email->subject('Email Test'); $this->email->message('Testing the email class.');

Después de eso, ejecute el send() funciona como se muestra a continuación para enviar un correo electrónico.

$this->email->send();

Ejemplo

Crea un archivo de controlador Email_controller.php y guárdalo en application/controller/Email_controller.php.

<?php 
   class Email_controller extends CI_Controller { 
 
      function __construct() { 
         parent::__construct(); 
         $this->load->library('session'); 
         $this->load->helper('form'); } public function index() { $this->load->helper('form'); 
         $this->load->view('email_form'); } public function send_mail() { $from_email = "[email protected]"; 
         $to_email = $this->input->post('email'); 
   
         //Load email library 
         $this->load->library('email'); $this->email->from($from_email, 'Your Name'); $this->email->to($to_email); $this->email->subject('Email Test'); 
         $this->email->message('Testing the email class.'); //Send mail if($this->email->send()) 
         $this->session->set_flashdata("email_sent","Email sent successfully."); else $this->session->set_flashdata("email_sent","Error in sending Email."); 
         $this->load->view('email_form'); 
      } 
   } 
?>

Crea un archivo de vista llamado email_form.php y guárdalo en application/views/email_form.php

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Email Example</title> 
   </head>
	
   <body> 
      <?php 
         echo $this->session->flashdata('email_sent'); 
         echo form_open('/Email_controller/send_mail'); 
      ?> 
		
      <input type = "email" name = "email" required /> 
      <input type = "submit" value = "SEND MAIL"> 
		
      <?php 
         echo form_close(); 
      ?> 
   </body>
	
</html>

Realice los cambios en el routes.php presentar en application/config/routes.php y agregue la siguiente línea al final del archivo.

$route['email'] = 'Email_Controller';

Ejecute el ejemplo anterior visitando el siguiente enlace. Reemplace yoursite.com con la URL de su sitio.

http://yoursite.com/index.php/email

La validación es un proceso importante al crear una aplicación web. Garantiza que los datos que estamos obteniendo sean adecuados y válidos para almacenarlos o procesarlos. CodeIgniter ha facilitado mucho esta tarea. Entendamos este proceso con un ejemplo sencillo.

Ejemplo

Crear un archivo de vista myform.php y guarde el siguiente código en application/views/myform.php. Esta página mostrará un formulario donde el usuario puede enviar su nombre y validaremos esta página para asegurarnos de que no debe estar vacía durante el envío.

<html>
 
   <head> 
      <title>My Form</title> 
   </head>
	
   <body>
      <form action = "" method = "">
         <?php echo validation_errors(); ?>  
         <?php echo form_open('form'); ?>  
         <h5>Name</h5> 
         <input type = "text" name = "name" value = "" size = "50" />  
         <div><input type = "submit" value = "Submit" /></div>  
      </form>  
   </body>
	
</html>

Crear un archivo de vista formsuccess.php y guárdalo en application/views/formsuccess.php. Esta página se mostrará si el formulario se valida correctamente.

<html>
 
   <head> 
      <title>My Form</title>
   </head> 
	
   <body>  
      <h3>Your form was successfully submitted!</h3>  
      <p><?php echo anchor('form', 'Try it again!'); ?></p>  
   </body>
	
</html>

Crea un archivo de controlador Form.php y guárdalo en application/controller/Form.php. Este formulario mostrará errores si no se valida correctamente o si no se redirige aformsuccess.php página.

<?php
  
   class Form extends CI_Controller { 
	
      public function index() { 
         /* Load form helper */ 
         $this->load->helper(array('form'));
			
         /* Load form validation library */ 
         $this->load->library('form_validation'); /* Set validation rule for name field in the form */ $this->form_validation->set_rules('name', 'Name', 'required'); 
			
         if ($this->form_validation->run() == FALSE) { $this->load->view('myform'); 
         } 
         else { 
            $this->load->view('formsuccess'); 
         } 
      }
   }
?>

Agregue la siguiente línea en application/config/routes.php.

$route['validation'] = 'Form';

Ejecutemos este ejemplo visitando la siguiente URL en el navegador. Esta URL puede ser diferente según su sitio.

http://yoursite.com/index.php/validation

Producirá la siguiente pantalla:

Hemos agregado una validación en el controlador - Namees un campo obligatorio antes de enviar el formulario. Por lo tanto, si hace clic en el botón enviar sin ingresar nada en el campo de nombre, se le pedirá que ingrese el nombre antes de enviar, como se muestra en la pantalla a continuación.

Después de ingresar el nombre correctamente, será redirigido a la pantalla que se muestra a continuación.

En el ejemplo anterior, hemos utilizado la configuración de reglas requerida. Hay muchas reglas disponibles en CodeIgniter, que se describen a continuación.

Referencia de la regla de validación

La siguiente es una lista de todas las reglas nativas que están disponibles para usar:

Regla Parámetro Descripción Ejemplo

required

No Devuelve FALSE si el elemento del formulario está vacío.

matches

si Devuelve FALSE si el elemento del formulario no coincide con el del parámetro. coincide con [form_item]

regex_match

si Devuelve FALSE si el elemento del formulario no coincide con la expresión regular. regex_match [/ regex /]

differs

si Devuelve FALSE si el elemento del formulario no difiere del del parámetro. difiere [form_item]

is_unique

si Devuelve FALSE si el elemento del formulario no es exclusivo de la tabla y el nombre del campo en el parámetro. Nota: esta regla requiere que el Generador de consultas esté habilitado para funcionar. is_unique [table.field]

min_length

si Devuelve FALSE si el elemento del formulario es más corto que el valor del parámetro. min_length [3]

max_length

si Devuelve FALSE si el elemento del formulario es más largo que el valor del parámetro. max_length [12]

exact_length

si Devuelve FALSE si el elemento del formulario no es exactamente el valor del parámetro. longitud_exacta [8]

greater_than

si Devuelve FALSE si el elemento del formulario es menor o igual que el valor del parámetro o no es numérico. mayor_de [8]

greater_than_equal_to

si Devuelve FALSE si el elemento del formulario es menor que el valor del parámetro o no es numérico. mayor_que_igual_a [8]

less_than

si Devuelve FALSE si el elemento del formulario es mayor o igual que el valor del parámetro o no es numérico. menos_de [8]

less_than_equal_to

si Devuelve FALSE si el elemento del formulario es mayor que el valor del parámetro o no es numérico. menos_que_igual_a [8]

in_list

si Devuelve FALSE si el elemento del formulario no está dentro de una lista predeterminada. in_list [rojo, azul, verde]

alpha

No Devuelve FALSE si el elemento del formulario contiene algo más que caracteres alfabéticos.

alpha_numeric

No Devuelve FALSE si el elemento del formulario contiene algo más que caracteres alfanuméricos.

alpha_numeric_spaces

No Devuelve FALSE si el elemento del formulario contiene algo más que caracteres alfanuméricos o espacios. Debe usarse después del recorte para evitar espacios al principio o al final

alpha_dash

No Devuelve FALSE si el elemento del formulario contiene algo más que caracteres alfanuméricos, guiones bajos o guiones.

numeric

No Devuelve FALSE si el elemento del formulario contiene algo más que caracteres numéricos.

integer

No Devuelve FALSE si el elemento del formulario contiene algo más que un número entero.

decimal

No Devuelve FALSE si el elemento del formulario contiene algo más que un número decimal.

is_natural

No Devuelve FALSE si el elemento del formulario contiene algo que no sea un número natural: 0, 1, 2, 3, etc.

is_natural_no_zero

No Devuelve FALSE si el elemento del formulario contiene algo que no sea un número natural, pero no cero: 1, 2, 3, etc.

valid_url

No Devuelve FALSE si el elemento del formulario no contiene una URL válida.

valid_email

No Devuelve FALSE si el elemento del formulario no contiene una dirección de correo electrónico válida.

valid_emails

No Devuelve FALSE si algún valor proporcionado en una lista separada por comas no es un correo electrónico válido.

valid_ip

No Devuelve FALSE si la IP proporcionada no es válida. Acepta un parámetro opcional de 'ipv4' o 'ipv6' para especificar un formato de IP.

valid_base64

No Devuelve FALSE si la cadena proporcionada contiene algo más que caracteres Base64 válidos.

Al construir sitios web, a menudo necesitamos rastrear la actividad y el estado del usuario y, para este propósito, tenemos que usar session. CodeIgniter tiene una clase de sesión para este propósito.

Inicializar una sesión

Los datos de las sesiones están disponibles globalmente a través del sitio, pero para usar esos datos, primero debemos inicializar la sesión. Podemos hacerlo ejecutando la siguiente línea en constructor.

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

Después de cargar la biblioteca de sesión, simplemente puede usar el objeto de sesión como se muestra a continuación.

$this->session

Agregar datos de sesión

En PHP, simplemente usamos $_SESSION array para establecer cualquier dato en la sesión como se muestra a continuación.

$_SESSION[‘key’] = value;

Dónde 'key'es la clave de matriz y value se asigna en el lado derecho del signo igual.

Lo mismo se puede hacer en CodeIgniter como se muestra a continuación.

$this->session->set_userdata('some_name', 'some_value');

set_userdata()La función toma dos argumentos. El primer argumento,some_name, es el nombre de la variable de sesión, bajo la cual, some_value será almacenado.

set_userdata() La función también admite otra sintaxis en la que puede pasar una matriz para almacenar valores como se muestra a continuación.

$newdata = array( 
   'username'  => 'johndoe', 
   'email'     => '[email protected]', 
   'logged_in' => TRUE
);  

$this->session->set_userdata($newdata);

Eliminar datos de sesión

En PHP, podemos eliminar los datos almacenados en la sesión usando el unset() funciona como se muestra a continuación.

unset($_SESSION[‘some_name’]);

Eliminar datos de sesión en CodeIgniter es muy simple, como se muestra a continuación. La siguiente versión deunset_userdata() La función eliminará solo una variable de la sesión.

$this->session->unset_userdata('some_name');

Si desea eliminar más valores de la sesión o eliminar una matriz completa, puede usar la siguiente versión de unset_userdata() función.

$this->session->unset_userdata($array_items);

Obtener datos de la sesión

Después de configurar los datos en la sesión, también podemos recuperar esos datos como se muestra a continuación. Userdata()La función se utilizará para este propósito. Esta función volveráNULL si los datos a los que intenta acceder no están disponibles.

$name = $this->session->userdata('name');

Ejemplo

Crea una clase de controlador llamada Session_controller.php y guárdalo en application/controller/Session_controller.php.

<?php 
   class Session_controller extends CI_Controller {
	
      public function index() { 
         //loading session library 
         $this->load->library('session'); //adding data to session $this->session->set_userdata('name','virat');
			
         $this->load->view('session_view'); } public function unset_session_data() { //loading session library $this->load->library('session');
			
         //removing session data 
         $this->session->unset_userdata('name'); $this->load->view('session_view'); 
      } 
		
   } 
?>

Crea un archivo de vista llamado session_view.php y guárdalo en application/views/session_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Session Example</title> 
   </head>
	
   <body> 
      Welcome <?php echo $this->session->userdata('name'); ?> 
      <br> 
      <a href = 'http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'>
         Click Here</a> to unset session data. 
   </body>
	
</html>

Realice los cambios en el routes.php presentar en application/config/routes.php y agregue la siguiente línea al final del archivo.

$route['sessionex'] = 'Session_Controller';

Ejecute el ejemplo anterior utilizando la siguiente dirección. Reemplazaryoursite.com con la URL de su sitio.

http://yoursite.com/index.php/sessionex

Mientras creamos una aplicación web, necesitamos almacenar algunos datos solo una vez y luego queremos eliminar esos datos. Por ejemplo, para mostrar algún mensaje de error o mensaje de información. En PHP, tenemos que hacerlo manualmente, pero CodeIgniter nos ha facilitado este trabajo. En CodeIgniter, flashdata solo estará disponible hasta la próxima solicitud, y se eliminará automáticamente.

Agregar Flashdata

Simplemente podemos almacenar flashdata como se muestra a continuación.

$this->session->mark_as_flash('item');
  • mark_as_flash()La función se usa para este propósito, que toma solo un argumento del valor que se va a almacenar. También podemos pasar una matriz para almacenar varios valores.

  • set_flashdata()También se puede usar la función, que toma dos argumentos, nombre y valor, como se muestra a continuación. También podemos pasar una matriz.

$this->session->set_flashdata('item','value');

Recuperar Flashdata

Flashdata se puede recuperar usando la función flashdata () que toma un argumento del elemento a buscar como se muestra a continuación. La función flashdata () se asegura de que solo obtenga datos flash y no ningún otro dato.

$this->session->flashdata('item');

Si no pasa ningún argumento, puede obtener una matriz con la misma función.

Ejemplo

Crea una clase llamada FlashData_Controller.php y guárdalo en application/controller/FlashData_Controller.php.

<?php 
   class FlashData_Controller extends CI_Controller {
	
      public function index() { 
         //Load session library 
         $this->load->library('session');
			
         //redirect to home page 
         $this->load->view('flashdata_home'); } public function add() { //Load session library $this->load->library('session'); 
         $this->load->helper('url'); //add flash data $this->session->set_flashdata('item','item-value'); 
   
         //redirect to home page 
         redirect('flashdata'); 
      } 
   } 
?>

Crea un archivo de vista llamado flashdata_home.php y guárdalo en application/views/ flashdata_home.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Flashdata Example</title> 
   </head>
	
   <body> 
      Flash Data Example 
      <h2><?php echo $this->session->flashdata('item'); ?></h2> 
      <a href = 'flashdata/add'>Click Here</a> to add flash data. 
   </body>
	
</html>

Realice los cambios en el routes.php presentar en application/config/routes.php y agregue la siguiente línea al final del archivo.

$route['flashdata'] = 'FlashData_Controller'; 
$route['flashdata/add'] = 'FlashData_Controller/add';

Ejecute el ejemplo anterior visitando el siguiente enlace. Reemplace yoursite.com con la URL de su sitio.

http://yoursite.com/index.php/flashdata

Después de visitar la URL anterior, verá una pantalla como se muestra a continuación.

Haga clic en "Click Here”Y verá una pantalla como se muestra a continuación. Aquí, en esta pantalla, verá un valor de la variable de datos flash. Actualice la página nuevamente y verá una pantalla como la anterior y la variable de datos flash se eliminará automáticamente.

En algunas situaciones, donde desea eliminar los datos almacenados en la sesión después de un período de tiempo específico, esto se puede hacer usando tempdata funcionalidad en CodeIgniter.

Agregar Tempdata

Para agregar datos como tempdata, tenemos que usar mark_as_tempdata()función. Esta función toma dos elementos de argumento o elementos para ser almacenados comotempdata y el tiempo de vencimiento de esos artículos se muestra a continuación.

// 'item' will be erased after 300 seconds(5 minutes) 
$this->session->mark_as_temp('item',300);

También puede pasar una matriz para almacenar varios datos. Todos los elementos almacenados a continuación caducarán después de 300 segundos.

$this->session->mark_as_temp(array('item','item2'),300);

También puede establecer diferentes tiempos de vencimiento para cada artículo como se muestra a continuación.

// 'item' will be erased after 300 seconds, while 'item2' 
// will do so after only 240 seconds 

$this->session->mark_as_temp(array( 
   'item'=>300, 
   'item2'=>240 
));

Recuperar Tempdata

Podemos recuperar los tempdata usando tempdata()función. Esta función asegura que está obteniendo solo datos temporales y no otros datos. Mire el ejemplo que se muestra a continuación para ver cómo recuperar tempdata.tempdata() La función tomará un argumento del elemento que se va a buscar.

$this->session->tempdata('item');

Si omite el argumento, puede recuperar todos los datos temporales existentes.

Quitar Tempdata

Tempdata se elimina automáticamente después de su tiempo de vencimiento, pero si desea eliminar tempdata antes de eso, puede hacerlo como se muestra a continuación usando el unset_tempdata() función, que toma un argumento del elemento a eliminar.

$this->session->unset_tempdata('item');

Ejemplo

Crea una clase llamada Tempdata_controller.php y guárdalo en application/controller/Tempdata_controller.php.

<?php 
   class Tempdata_controller extends CI_Controller {
	
      public function index() { 
         $this->load->library('session'); $this->load->view('tempdata_view'); 
      } 
  
      public function add() { 
         $this->load->library('session'); $this->load->helper('url'); 
   
         //tempdata will be removed after 5 seconds 
         $this->session->set_tempdata('item','item-value',5); 
   
         redirect('tempdata'); 
      } 
   } 
?>

Crea un archivo llamado tempdata_view.php y guárdalo en application/views/tempdata_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Tempdata Example</title> 
   </head>
	
   <body> 
      Temp Data Example 
      <h2><?php echo $this->session->tempdata('item'); ?></h2>
      <a href = 'tempdata/add'>Click Here</a> to add temp data. 
   </body>
	
</html>

Realice los cambios en el routes.php en application / config / routes.php y agregue la siguiente línea al final del archivo.

$route['tempdata'] = "Tempdata_controller"; $route['tempdata/add'] = "Tempdata_controller/add";

Ejecute el ejemplo anterior visitando el siguiente enlace. Reemplace yoursite.com con la URL de su sitio.

http://yoursite.com/index.php/tempdata

Después de visitar la URL anterior, verá una pantalla como se muestra a continuación.

Haga clic en “Click Here” enlace y verá una pantalla como se muestra a continuación.

Aquí, en esta pantalla, verá un valor de la variable de datos temporales. Actualice la misma página después de cinco segundos nuevamente, ya que hemos configurado los datos de temperatura para cinco segundos y verá una pantalla como la anterior y la variable de datos de temperatura se eliminará automáticamente después de cinco segundos. Si actualiza la misma página antes de 5 segundos, los datos temporales no se eliminarán, ya que el período de tiempo no ha terminado.

Destruir una sesión

En PHP, estamos usando el session_destroy() función para destruir la sesión y en CodeIgniter podemos destruir la función como se muestra a continuación.

$this->session->sess_destroy();

Después de llamar a esta función, todos los datos de la sesión, incluido el flashdata y tempdata se eliminará de forma permanente y no se podrá recuperar.

La cookie es un pequeño fragmento de datos enviado desde el servidor web para almacenar en la computadora del cliente. CodeIgniter tiene un ayudante llamado "Cookie Helper" para la gestión de cookies.

Syntax

set_cookie ( $ nombre [, $ valor = '' [, $ expire = '' [, $ dominio = '' [, $ ruta = '/' [, $ prefijo = '' [, $ seguro = FALSO [, $ httponly = FALSO ]]]]]]]])

Parameters

  • $name( mixto ): nombre de la cookie o matriz asociativa de todos los parámetros disponibles para esta función

  • $value( cadena ): valor de la cookie

  • $expire( int ): número de segundos hasta el vencimiento

  • $domain( cadena ): dominio de la cookie (normalmente: .tudominio.com)

  • $path( cadena ) - Ruta de la cookie

  • $prefix( cadena ): prefijo del nombre de la cookie

  • $secure( bool ): si solo enviar la cookie a través de HTTPS

  • $httponly( bool ): si se debe ocultar la cookie de JavaScript

Return Type

vacío

En el set_cookie()función, podemos pasar todos los valores de dos formas. En la primera forma, solo se puede pasar una matriz y, en la segunda, también se pueden pasar parámetros individuales.

Syntax

get_cookie ( $ index [, $ xss_clean = NULL ]])

Parameters

  • $index( cadena ) - Nombre de la cookie

  • $xss_clean( bool ): si se aplica el filtrado XSS al valor devuelto

Return

El valor de la cookie o NULL si no se encuentra

Return Type

mezclado

los get_cookie() La función se utiliza para obtener la cookie que se ha establecido mediante la función set_cookie ().

Syntax

delete_cookie ( $ nombre [, $ dominio = '' [, $ ruta = '/' [, $ prefijo = '' ]]]])

Parameters

  • $name( cadena ) - Nombre de la cookie

  • $domain( cadena ): dominio de la cookie (normalmente: .tudominio.com)

  • $path( cadena ) - Ruta de la cookie

  • $prefix( cadena ): prefijo del nombre de la cookie

Return Type

vacío

los delete_cookie() La función se utiliza para eliminar la cookie ().

Ejemplo

Crea un controlador llamado Cookie_controller.php y guárdalo en application/controller/Cookie_controller.php

<?php 
   class Cookie_controller extends CI_Controller { 
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper(array('cookie', 'url')); 
      } 
  
      public function index() { 
         set_cookie('cookie_name','cookie_value','3600'); 
         $this->load->view('Cookie_view'); } public function display_cookie() { echo get_cookie('cookie_name'); $this->load->view('Cookie_view');
      } 
  
      public function deletecookie() { 
         delete_cookie('cookie_name'); 
         redirect('cookie/display'); 
      } 
		
   } 
?>

Crea un archivo de vista llamado Cookie_view.php y guárdalo en application/views/Cookie_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head> 
	
   <body> 
      <a href = 'display'>Click Here</a> to view the cookie.<br> 
      <a href = 'delete'>Click Here</a> to delete the cookie. 
   </body>
	
</html>

Cambie el archivo routes.php en application / config / routes.php para agregar la ruta para el controlador anterior y agregue la siguiente línea al final del archivo.

$route['cookie'] = "Cookie_controller"; $route['cookie/display'] = "Cookie_controller/display_cookie"; 
$route['cookie/delete'] = "Cookie_controller/deletecookie";

Después de eso, puede ejecutar la siguiente URL en el navegador para ejecutar el ejemplo.

http://yoursite.com/index.php/cookie

Producirá una salida como se muestra en la siguiente captura de pantalla.

Las funciones de la biblioteca CodeIgniter y las funciones auxiliares deben inicializarse antes de que se usen, pero hay algunas funciones comunes que no necesitan inicializarse.

Estas funciones comunes y sus descripciones se dan a continuación.

Sintaxis is_php ( $ versión )
Parámetros

$version( cadena ): número de versión

Regreso TRUE si la versión de PHP en ejecución es al menos la especificada o FALSE si no
Tipo de retorno vacío
Descripción Determina si la versión de PHP que se está utilizando es mayor que el número de versión proporcionado.
Sintaxis is_really_writable ( $ archivo )
Parámetros

$file( cadena ) - Ruta del archivo

Regreso VERDADERO si la ruta se puede escribir, FALSO si no
Return Type bool
Description checks to see if file is writable or not.
Syntax config_item($key)
Parameters

$key (string) − Config item key

Return Configuration key value or NULL if not found
Return Type mixed
Description This function is used to get the configuration item
Syntax set_status_header($code[, $text = ''])
Parameters

$code (int) − HTTP Response status code

$text (string) − A custom message to set with the status code

Return
Return Type void
Description This function permits you to manually set a server status header.
Syntax remove_invisible_characters($str[, $url_encoded = TRUE])
Parameters

$str (string) − Input string

$url_encoded (bool) − Whether to remove URLencoded characters as well

Return Sanitized string
Return Type string
Description This function prevents inserting NULL characters between ASCII characters
Syntax html_escape($var)
Parameters

$var (mixed) − Variable to escape (string or array)

Return HTML escaped string(s)
Return Type mixed
Description This function acts as a native PHP htmlspecialchars() function.
Syntax get_mimes()
Return An associative array of file types
Return Type array
Description This function returns a reference to the MIMEs array from application/config/mimes.php.
Syntax is_https()

Return TRUE if currently using HTTP-over-SSL, FALSE if not
Return Type bool
Description Returns TRUE if a secure (HTTPS) connection is used and FALSE in any other case (including non-HTTP requests).
Syntax is_cli()
Return TRUE if currently running under CLI, FALSE otherwise
Return Type bool
Description Returns TRUE if the application is run through the command line and FALSE if not.
Syntax function_usable($function_name)
Parameters

$function_name (string) − Function name

Return Type bool
Description Returns TRUE if a function exists and is usable, FALSE otherwise.

Given below is an example, which demonstrates all of the above functions.

Example

Here we have created only one controller in which we will use the above functions. Copy the below given code and save it at application/controller/CommonFun_Controller.php.

<?php 
   class CommonFun_Controller extends CI_Controller { 
	
      public function index() {
         set_status_header(200); 
         echo is_php('5.3')."<br>"; 
         var_dump(is_really_writable('./Form.php')); 
			
         echo config_item('language')."<br>"; 
         echo remove_invisible_characters('This is a ‌test','UTF8')."<br>"; 
			
         $str = '< This > is \' a " test & string'; 
         echo html_escape($str)."<br>"; 
         echo "is_https():".var_dump(is_https())."<br>"; 
         echo "is_cli():".var_dump(is_cli())."<br>"; 
			
         var_dump(function_usable('test'))."<br>"; 
         echo "get_mimes():".print_r(get_mimes())."<br>"; 
      } 
  
      public function test() { 
         echo "Test function"; 
      } 
		
   } 
?>

Change the routes.php file at application/config/routes.php to add route for the above controller and add the following line at the end of the file.

$route['commonfunctions'] = 'CommonFun_Controller';

Type the following URL in the address bar of your browser to execute the example.

http://yoursite.com/index.php/commonfunctions

Caching a page will improve the page load speed. If the page is cached, then it will be stored in its fully rendered state. Next time, when the server gets a request for the cached page, it will be directly sent to the requested browser.

Cached files are stored in application/cache folder. Caching can be enabled on per page basis. While enabling the cache, we need to set the time, until which it needs to remain in cached folder and after that period, it will be deleted automatically.

Enable Caching

Caching can be enabled by executing the following line in any of the controller’s method.

$this->output->cache($n);

Where $n is the number of minutes, you wish the page to remain cached between refreshes.

Deshabilitar el almacenamiento en caché

El archivo de caché se elimina cuando caduca, pero cuando desea eliminarlo manualmente, debe deshabilitarlo. Puede deshabilitar el almacenamiento en caché ejecutando la siguiente línea.

// Deletes cache for the currently requested URI 
$this->output->delete_cache();
  
// Deletes cache for /foo/bar 
$this->output->delete_cache('/foo/bar');

Ejemplo

Crea un controlador llamado Cache_controller.php y guárdalo en application/controller/Cache_controller.php

<?php 
   class Cache_controller extends CI_Controller { 
	
      public function index() { 
         $this->output->cache(1); 
         $this->load->view('test'); } public function delete_file_cache() { $this->output->delete_cache('cachecontroller'); 
      } 
   } 
?>

Crea un archivo de vista llamado test.php y guárdalo en application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Cambiar el routes.php presentar en application/config/routes.php para agregar una ruta para el controlador anterior y agregar la siguiente línea al final del archivo.

$route['cachecontroller'] = 'Cache_controller'; $route['cachecontroller/delete'] = 'Cache_controller/delete_file_cache';

Escriba la siguiente URL en el navegador para ejecutar el ejemplo.

http://yoursite.com/index.php/cachecontroller

Después de visitar la URL anterior, verá que se creará un archivo de caché para esto en application/cachecarpeta. Para eliminar el archivo, visite la siguiente URL.

http://yoursite.com/index.php/cachecontroller/delete

Al crear una aplicación web, a menudo necesitamos redirigir al usuario de una página a otra. CodeIgniter nos facilita este trabajo. losredirect() La función se utiliza para este propósito.

Syntax

redireccionar$uri = '', $método = 'auto', $ código = NULL )

Parameters

  • $uri( cadena ) - cadena URI

  • $method( cadena ) - Método de redireccionamiento ('auto', 'ubicación' o 'actualizar')

  • $code( cadena ): código de respuesta HTTP (generalmente 302 o 303)

Return type

vacío

El primer argumento puede tener dos tipos de URI. Podemos pasar segmentos de URL o URI del sitio completo al controlador que desea dirigir.

El segundo parámetro opcional puede tener cualquiera de los tres valores de auto, ubicación o actualización. El valor predeterminado es automático.

El tercer parámetro opcional solo está disponible con redireccionamientos de ubicación y le permite enviar un código de respuesta HTTP específico.

Ejemplo

Crea un controlador llamado Redirect_controller.php y guárdalo en application/controller/Redirect_controller.php

<?php 
   class Redirect_controller extends CI_Controller { 
	
      public function index() { 
         /*Load the URL helper*/ 
         $this->load->helper('url'); /*Redirect the user to some site*/ redirect('http://www.tutorialspoint.com'); } public function computer_graphics() { /*Load the URL helper*/ $this->load->helper('url'); 
         redirect('http://www.tutorialspoint.com/computer_graphics/index.htm'); 
      } 
  
      public function version2() { 
         /*Load the URL helper*/ 
         $this->load->helper('url'); 
   
         /*Redirect the user to some internal controller’s method*/ 
         redirect('redirect/computer_graphics'); 
      } 
		
   } 
?>

Cambiar el routes.php presentar en application/config/routes.php para agregar una ruta para el controlador anterior y agregar la siguiente línea al final del archivo.

$route['redirect'] = 'Redirect_controller'; 
$route['redirect/version2'] = 'Redirect_controller/version2'; $route['redirect/computer_graphics'] = 'Redirect_controller/computer_graphics';

Escriba la siguiente URL en el navegador para ejecutar el ejemplo.

http://yoursite.com/index.php/redirect

La URL anterior lo redireccionará al sitio web tutorialspoint.com y, si visita la siguiente URL, lo redireccionará al tutorial de gráficos por computadora en tutorialspoint.com.

http://yoursite.com/index.php/redirect/computer_graphics

Al construir una aplicación web, nos preocupa mucho el rendimiento del sitio web en términos de cuánto tiempo tardó el controlador en ejecutarse y cuánta memoria se utiliza. No solo el rendimiento, sino que también necesitamos ver los conocimientos de datos como datos POST, datos de consultas de bases de datos, datos de sesión, etc. para fines de depuración mientras se desarrolla alguna aplicación. CodeIgniter nos ha facilitado este trabajo al perfilar una aplicación.

Habilitar la creación de perfiles

Para habilitar la creación de perfiles de su aplicación, simplemente ejecute el comando que se proporciona a continuación en cualquiera de los métodos de su controlador.

$this->output->enable_profiler(TRUE);

El informe del perfil se puede ver en la parte inferior de la página después de habilitarlo.

Deshabilitar la creación de perfiles

Para deshabilitar la creación de perfiles de su aplicación, simplemente ejecute el comando que se proporciona a continuación en cualquiera de los métodos de su controlador.

$this->output->enable_profiler(FALSE);

Habilitar / deshabilitar la sección Profiler

La creación de perfiles se puede realizar por secciones. Puede habilitar o deshabilitar la creación de perfiles de una sección estableciendo un valor booleano VERDADERO o FALSO. Si desea configurar la creación de perfiles en la aplicación, puede hacerlo en un archivo ubicado enapplication/config/profiler.php

Por ejemplo, el siguiente comando habilitará las consultas de perfiles para toda la aplicación.

$config['queries'] = TRUE;

En la siguiente tabla, la clave es el parámetro, que se puede configurar en la matriz de configuración para habilitar o deshabilitar un perfil en particular.

Llave Descripción Defecto

benchmarks

Tiempo transcurrido de los puntos de referencia y tiempo total de ejecución CIERTO

config

Variables CodeIgniterConfig CIERTO

controller_info

La clase y el método del controlador solicitado CIERTO

get

Cualquier dato GET pasado en la solicitud CIERTO

http_headers

Los encabezados HTTP de la solicitud actual CIERTO

memory_usage

Cantidad de memoria consumida por la solicitud actual, en bytes CIERTO

post

Cualquier dato POST pasado en la solicitud CIERTO

queries

Listado de todas las consultas de base de datos ejecutadas, incluido el tiempo de ejecución CIERTO

uri_string

El URI de la solicitud actual CIERTO

session_data

Datos almacenados en la sesión actual CIERTO

query_toggle_count

El número de consultas después de las cuales el bloque de consultas se ocultará de forma predeterminada. 25

El generador de perfiles establecido en el archivo en application/config/profiler.php se puede anular utilizando el set_profiler_sections() funcionan en los controladores como se muestra a continuación.

$sections = array( 
   'config'  => TRUE, 
   'queries' => TRUE 
); 
 
$this->output->set_profiler_sections($sections);

Establecer puntos de referencia

Si desea medir el tiempo necesario para ejecutar un conjunto de líneas o el uso de la memoria, puede calcularlo utilizando puntos de referencia en CodeIgniter. Hay un "Benchmarking”Clase para este propósito en CodeIgniter.

Esta clase se carga automáticamente; no tiene que cargarlo. Se puede usar en cualquier lugar de su controlador, vista y clases de modelo. Todo lo que tiene que hacer es marcar un punto de inicio y un punto final y luego ejecutar elelapsed_time() función entre estos dos puntos marcados y puede obtener el tiempo que tardó en ejecutar ese código como se muestra a continuación.

<?php 
   $this->benchmark->mark('code_start'); // Some code happens here $this->benchmark->mark('code_end');
  
   echo $this->benchmark->elapsed_time('code_start', 'code_end'); 
?>

Para mostrar el uso de la memoria, use la función memory_usage() como se muestra en el siguiente código.

<?php 
   echo $this->benchmark->memory_usage(); 
?>

Ejemplo

Crea un controlador llamado Profiler_controller.php y guárdalo en application/controller/Profiler_controller.php

<?php 
   class Profiler_controller extends CI_Controller {
  
      public function index() {
	
         //enable profiler
         $this->output->enable_profiler(TRUE); $this->load->view('test'); 
      } 
  
      public function disable() {
	
         //disable profiler 
         $this->output->enable_profiler(FALSE); $this->load->view('test'); 
      }
		
   } 
?>

Crea un archivo de vista llamado test.php y guárdalo en application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Cambie el archivo route.php en application/config/routes.php para agregar una ruta para el controlador anterior y agregar la siguiente línea al final del archivo.

$route['profiler'] = "Profiler_controller"; $route['profiler/disable'] = "Profiler_controller/disable"

Después de eso, puede escribir la siguiente URL en la barra de direcciones de su navegador para ejecutar el ejemplo.

http://yoursite.com/index.php/profiler

La URL anterior habilitará el generador de perfiles y producirá una salida como se muestra en la siguiente captura de pantalla.

Para deshabilitar la creación de perfiles, ejecute la siguiente URL.

http://yoursite.com/index.php/profiler/disable

Agregar archivos de JavaScript y CSS (hoja de estilo en cascada) en CodeIgniter es muy simple. Debe crear la carpeta JS y CSS en el directorio raíz y copiar todos los archivos .js en la carpeta JS y los archivos .css en la carpeta CSS como se muestra en la figura.

Por ejemplo, supongamos que ha creado un archivo JavaScript sample.js y un archivo CSS style.css. Ahora, para agregar estos archivos a sus vistas, cargue URL helper en su controlador como se muestra a continuación.

$this->load->helper('url');

Después de cargar el asistente de URL en el controlador, simplemente agregue las siguientes líneas en el archivo de vista, para cargar el archivo sample.js y style.css en la vista como se muestra a continuación.

<link rel = "stylesheet" type = "text/css" 
   href = "<?php echo base_url(); ?>css/style.css">

<script type = 'text/javascript' src = "<?php echo base_url(); 
   ?>js/sample.js"></script>

Ejemplo

Crea un controlador llamado Test.php y guárdalo en application/controller/Test.php

<?php 
   class Test extends CI_Controller {
	
      public function index() { 
         $this->load->helper('url'); 
         $this->load->view('test'); 
      } 
   } 
?>

Crea un archivo de vista llamado test.php y guárdalo en application/views/test.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
      <link rel = "stylesheet" type = "text/css" 
         href = "<?php echo base_url(); ?>css/style.css"> 
      <script type = 'text/javascript' src = "<?php echo base_url(); 
         ?>js/sample.js"></script> 
   </head>
	
   <body> 
      <a href = 'javascript:test()'>Click Here</a> to execute the javascript function. 
   </body>
	
</html>

Crea un archivo CSS llamado style.css y guárdalo en css/style.css

body { 
   background:#000; 
   color:#FFF; 
}

Crea un archivo JS llamado sample.js y guárdalo en js/sample.js

function test() { 
   alert('test'); 
}

Cambiar el routes.php presentar en application/config/routes.php para agregar una ruta para el controlador anterior y agregar la siguiente línea al final del archivo.

$route['profiler'] = "Profiler_controller"; 
$route['profiler/disable'] = "Profiler_controller/disable"

Utilice la siguiente URL en el navegador para ejecutar el ejemplo anterior.

http://yoursite.com/index.php/test

La clase de idioma en CodeIgniter proporciona una manera fácil de admitir varios idiomas para la internacionalización. Hasta cierto punto, podemos usar archivos de diferentes idiomas para mostrar texto en muchos idiomas diferentes.

Podemos poner diferentes archivos de idioma en el directorio de la aplicación / idioma. Los archivos de idioma del sistema se pueden encontrar en el directorio system / language, pero para agregar su propio idioma a su aplicación, debe crear una carpeta separada para cada idioma en el directorio application / language.

Creando archivos Idioma

Para crear un archivo de idioma, debe terminarlo con _lang.php. Por ejemplo, desea crear un archivo de idioma para el idioma francés, luego debe guardarlo confrench_lang.php. Dentro de este archivo puede almacenar todos los textos de su idioma en clave, combinación de valores en$lang matriz como se muestra a continuación.

$lang[‘key’] = ‘val’;

Cargando archivo de idioma

Para usar cualquiera de los idiomas en su aplicación, primero debe cargar el archivo de ese idioma en particular para recuperar varios textos almacenados en ese archivo. Puede utilizar el siguiente código para cargar el archivo de idioma.

$this->lang->load('filename', 'language');
  • filename- Es el nombre del archivo que desea cargar. No use la extensión del archivo aquí, solo el nombre del archivo.

  • Language - Es el conjunto de idiomas que lo contiene.

Obteniendo texto de idioma

Para obtener una línea del archivo de idioma, simplemente ejecute el siguiente código.

$this->lang->line('language_key');

Dónde language_key es el parámetro de clave utilizado para obtener el valor de la clave en el archivo de idioma cargado.

Idiomas de carga automática

Si necesita algún idioma a nivel mundial, puede cargarlo automáticamente en application/config/autoload.php archivo como se muestra a continuación.

| -----------------------------------------------------------------------
|  Auto-load Language files
| -----------------------------------------------------------------------
| Prototype:
|   $autoload['config'] = array('config1', 'config2');
|
| NOTE: Do not include the "_lang" part of your file. For example
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
*/
$autoload['language'] = array();

Simplemente, pase los diferentes idiomas para que CodeIgniter los cargue automáticamente.

Ejemplo

Crea un controlador llamado Lang_controller.php y guárdalo en application/controller/Lang_controller.php

<?php
   class Lang_controller extends CI_Controller {

      public function index(){
         //Load form helper
         $this->load->helper('form');

         //Get the selected language
         $language = $this->input->post('language');
		
         //Choose language file according to selected lanaguage
         if($language == "french") $this->lang->load('french_lang','french');
         else if($language == "german") $this->lang->load('german_lang','german');
         else
         $this->lang->load('english_lang','english'); //Fetch the message from language file. $data['msg'] = $this->lang->line('msg'); $data['language'] = $language; //Load the view file $this->load->view('lang_view',$data);
      }
   }
?>

Crea un archivo de vista llamado lang_view.php y guárdalo en application/views/ lang_view.php

<!DOCTYPE html>
<html lang = "en"> 

   <head>
      <meta charset = "utf-8">
      <title>CodeIgniter Internationalization Example</title>
   </head>
	
   <body>
      <?php
         echo form_open('/lang');
      ?>
		
      <select name = "language" onchange = "javascript:this.form.submit();">
         <?php
            $lang = array('english'=>"English",'french'=>"French",'german'=>"German");
				
            foreach($lang as $key=>$val) { if($key == $language) echo "<option value = '".$key."' selected>".$val."</option>"; else echo "<option value = '".$key."'>".$val."</option>"; } ?> </select> <br> <?php form_close(); echo $msg;
      ?>
		
   </body>
	
</html>

Cree tres carpetas llamadas inglés, francés y alemán en application/language como se muestra en la figura siguiente.

Copie el código dado a continuación y guárdelo en english_lang.php presentar en application/language/english carpeta.

<?php
   $lang['msg'] = "CodeIgniter Internationalization example.";
?>

Copie el código dado a continuación y guárdelo en french_lang.php presentar en application/language/French carpeta.

<?php
   $lang['msg'] = "Exemple CodeIgniter internationalisation.";
?>

Copie el código dado a continuación y guárdelo en german_lang.php presentar en application/language/german carpeta.

<?php
   $lang['msg'] = "CodeIgniter Internationalisierung Beispiel.";
?>

Cambiar el routes.php presentar en application/config/routes.php para agregar una ruta para el controlador anterior y agregar la siguiente línea al final del archivo.

$route['lang'] = "Lang_controller";

Ejecute la siguiente URL en el navegador para ejecutar el ejemplo anterior.

http://yoursite.com/index.php/lang

Producirá una salida como se muestra en la siguiente captura de pantalla. Si cambia el idioma en la lista desplegable, el idioma de la oración escrita debajo del menú desplegable también cambiará en consecuencia.

Prevención XSS

XSS significa secuencias de comandos entre sitios. CodeIgniter viene con seguridad de filtrado XSS. Este filtro evitará cualquier código JavaScript malicioso o cualquier otro código que intente secuestrar cookies y realizar actividades maliciosas. Para filtrar datos a través del filtro XSS, use elxss_clean() método como se muestra a continuación.

$data = $this->security->xss_clean($data);

Debe utilizar esta función solo cuando envíe datos. El segundo parámetro booleano opcional también se puede utilizar para comprobar el archivo de imagen en busca de ataques XSS. Esto es útil para la función de carga de archivos. Si su valor es verdadero, significa que la imagen es segura y no de otra manera.

Prevención de inyección SQL

La inyección SQL es un ataque realizado en la consulta de la base de datos. En PHP, usamosmysql_real_escape_string() función para evitar esto junto con otras técnicas, pero CodeIgniter proporciona funciones y bibliotecas incorporadas para evitar esto.

Podemos evitar la inyección de SQL en CodeIgniter de las siguientes tres formas:

  • Escapar de consultas
  • Oferta de consulta
  • Clase de registro activo

Escapar de consultas

<?php
   $username = $this->input->post('username'); $query = 'SELECT * FROM subscribers_tbl WHERE user_name = '.
      $this->db->escape($email);
   $this->db->query($query);
?>

$this->db->escape() La función agrega automáticamente comillas simples alrededor de los datos y determina el tipo de datos para que solo pueda escapar de los datos de cadena.

Oferta de consulta

<?php
   $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
   $this->db->query($sql, array(3, 'live', 'Rick'));
?>

En el ejemplo anterior, el signo de interrogación (?) Será reemplazado por la matriz en el segundo parámetro de la función query (). La principal ventaja de crear consultas de esta manera es que los valores se escapan automáticamente, lo que genera consultas seguras. El motor CodeIgniter lo hace por usted automáticamente, por lo que no tiene que recordarlo.

Clase de registro activo

<?php
   $this->db->get_where('subscribers_tbl',array
      ('status'=> active','email' => '[email protected]'));
?>

Al utilizar registros activos, cada adaptador de base de datos genera la sintaxis de consulta. También permite consultas más seguras, ya que los valores escapan automáticamente.

Ocultar errores de PHP

En el entorno de producción, a menudo no queremos mostrar ningún mensaje de error a los usuarios. Es bueno si está habilitado en el entorno de desarrollo con fines de depuración. Estos mensajes de error pueden contener cierta información, que no deberíamos mostrar a los usuarios del sitio por razones de seguridad.

Hay tres archivos CodeIgniter relacionados con errores.

Nivel de informe de errores de PHP

Un entorno diferente requiere diferentes niveles de notificación de errores. De forma predeterminada, el desarrollo mostrará errores, pero las pruebas y en vivo los ocultarán. Hay un archivo llamadoindex.phpen el directorio raíz de CodeIgniter, que se utiliza para este propósito. Si pasamos cero como argumento aerror_reporting() función entonces que ocultará todos los errores.

Error de la base de datos

Incluso si ha desactivado los errores de PHP, los errores de MySQL siguen abiertos. Puedes apagar esto enapplication/config/database.php. Selecciona eldb_debug opción en $db matriz a FALSE Como se muestra abajo.

$db['default']['db_debug'] = FALSE;

Registro de errores

Otra forma es transferir los errores a los archivos de registro. Por lo tanto, no se mostrará a los usuarios en el sitio. Simplemente, configure ellog_threshold valor en $config matriz a 1 en application/cofig/config.php archivo como se muestra a continuación.

$config['log_threshold'] = 1;

Prevención de CSRF

CSRF significa falsificación de solicitudes entre sitios. Puede prevenir este ataque habilitándolo en elapplication/config/config.php archivo como se muestra a continuación.

$config['csrf_protection'] = TRUE;

Cuando está creando un formulario usando form_open()función, insertará automáticamente un CSRF como campo oculto. También puede agregar manualmente el CSRF usando elget_csrf_token_name() y get_csrf_hash()función. losget_csrf_token_name() La función devolverá el nombre del CSRF y get_csrf_hash() devolverá el valor hash de CSRF.

El token CSRF se puede regenerar cada vez que se envía o también puede mantenerlo durante toda la vida de la cookie CSRF. Estableciendo el valorTRUE, en la matriz de configuración con clave ‘csrf_regenerate’ regenerará el token como se muestra a continuación.

$config['csrf_regenerate'] = TRUE;

También puede incluir en la lista blanca las URL de la protección CSRF configurándola en la matriz de configuración con la clave ‘csrf_exclude_uris’Como se muestra abajo. También puede utilizar expresiones regulares.

$config['csrf_exclude_uris'] = array('api/person/add');

Manejo de contraseñas

Muchos desarrolladores no saben cómo manejar las contraseñas en las aplicaciones web, lo que probablemente explica por qué a numerosos piratas informáticos les resulta tan fácil entrar en los sistemas. Uno debe tener en cuenta los siguientes puntos al manejar las contraseñas:

  • NO almacene las contraseñas en formato de texto sin formato.

  • Siempre hash tus contraseñas.

  • NO use codificación Base64 o similar para almacenar contraseñas.

  • NO use algoritmos hash débiles o rotos como MD5 o SHA1. Utilice solo algoritmos de hash de contraseña seguros como BCrypt, que se utiliza en las funciones de hash de contraseña de PHP.

  • NO muestre ni envíe una contraseña en formato de texto sin formato.

  • NO ponga límites innecesarios a las contraseñas de sus usuarios.