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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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/sessionexMientras 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 |
|
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 |
|
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 |
|
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 |
|
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.