0% encontró este documento útil (0 votos)
5 vistas7 páginas

Tutorial de Codeigniter Parte 2

codeigniter

Cargado por

anylu.mr10
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas7 páginas

Tutorial de Codeigniter Parte 2

codeigniter

Cargado por

anylu.mr10
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Haciendo uso de sesiones

Lo que haremos enseguida es cambiar la página de inicio de forma que muestre un formulario
de inicio de sesión.

En la carpeta app/Views creamos un nuevo archivo [Link]

Abrimos y cambiamos el contenido de app/controllers/[Link] quedando de la siguiente


forma:

Si refrescamos el navegador (en mi caso [Link] Veremos lo


siguiente:
*Recordemos que Home es el Controlador por default por lo que no es necesario especificarlo
en la url

Manejo de usuarios

Para que la pantalla de inicio de sesión funcione crearemos un controlador y un modelo que
corresponden a la tabla usuario de la base de datos, este controlador tendrá una función login
que se encargará de verificar las credenciales de acceso. En este también se pueden agregar
las funcionalidades para crear y editar usuarios.

Primero creamos un archivo [Link] en app/Models y el contenido será el siguiente:

Recordemos que modelo es el encargado de interactuar con la base de datos, esto es hacer las
consultas, CodeIgniter tiene utilidades para crear consultas de forma rápida y sencilla. Puede
parecer difícil por ahora entender el funcionamiento de este código, pero lo que hace es tomar
el parámetro $data que será un arreglo con dos valores login y password, la función where
creara una consulta que compare estos valores con las columnas correspondientes en la base
de datos y regresara un arreglo si encontró una coincidencia, más adelante quedara más claro.

Ahora creamos un archivo [Link] en app/Controllers y su contenido es el siguiente:


Como podemos ver llamamos a la función (metodo) login de UserModel que como dijimos
antes recibe un arreglo con el login y el password y así verificarlo en la base de datos.

Una vez validado el usuario guardamos algunos datos en la sesión, recuerden que en PHP
existe la superglobal $_SESSION (arreglo asociativo) y aun es accesible, pero CodeIgniter ofrece
la función session() que añade algunas utilidades.

Mas sobre sesiones: [Link]

La función session() regresa un objeto que a su vez tiene otras funcionalidades y variables,
podemos observar set(), esta recibe un arreglo asociativo y estos valores son almacenados en
la sesión

Otra función o método es setFlashdata() es similar a la anterior con la única diferencia de que
los datos almacenados se destruyen automáticamente en la siguiente petición (refrescar la
página o redireccionar) es útil por ejemplo para mensajes de alerta.

Modificamos app/Views/[Link] de la siguiente forma:


El nuevo código añade dos elementos a la navegación uno que muestra el nombre del usuario
en la sesión y otro para salir de la aplicación, más adelante implementaremos esta
funcionalidad.

Lo más importante es la línea 15, usamos una vez más la función session() pero esta vez
buscamos un atributo user, en CodeIgniter se le conoce como un “magic getter”, es decir
$_SESSION es un arreglo asociativo y la forma de tener acceso a ese valor es
$_SESSION[‘user’] pero CodeIgniter ofrece este mecanismo de convertir los valores en el
arreglo a variables (atributos) para facilitar el acceso, si te resulta más confuso puede usar el
método get()

session()->get(‘user’);

Al iniciar sesión el header lucirá así:

Agregamos a app/Views/[Link] lo siguiente:

Si ingresamos datos incorrectos:

Restringir acceso

Ahora editamos app(Views/Publication/[Link] de la siguiente forma:


Esto para prevenir que un visitante no identificado pueda crear una publicación.

Y también en ese mismo archivo:

En la línea 18 notamos el siguiente código:

<strong><?= $item['name']; ?></strong>

Pero este índice no es válido ya que la tabla publication no tiene un campo (columna) name, se
refiere a la columna name en user, para esto es necesario modificar el controlador Publication
de la siguiente forma:

Solo cambiamos una línea de código en lugar de llamar get() del modelo ahora llamamos a
show()

Lógicamente debemos implementar este metodo en el modelo, abrimos


app/Models/[Link] y agregamos:
Esta función creara la siguiente consulta:

De este modo ahora si tenemos el campo name.

Note se también que ahora los botones solo aparecerán en caso de que las publicaciones
pertenecen al usuario.

Como esta ahora el sistema podemos entrar directamente a la página de edición, por medio la
url . Podemos prevenirlo, abriendo app(Views/Publication/[Link]:
De este modo si no hay un usuario en sesión o no corresponde a la publicación mostrara un
mensaje de alerta.

La última pieza faltante es la funcionalidad para cerrar la sesión, si recordamos en el header


pusimos un enlace a user/logout

Como sabemos user corresponde al controlador User (app/Controllers/[Link]) y dentro de


este una función o método logout:

Como se puede observar es bastante sencilla, simplemente borra los datos en sesión y
redirecciona a la página inicial.

También podría gustarte