Comunidad de diseño web y desarrollo en internet online

Acceso restringido a ciertas páginas con el framework php Codeigniter

Citar            
MensajeEscrito el 22 Jun 2011 04:35 pm
Hace un tiempo hemos revisado como desarrollar un sistema de login de usuarios
utilizando en framework php Codeigniter
. Se trataba de una pantalla donde nuestro usuario indicaba su e-mail y contraseña y nosotros autorizábamos el acceso o presentábamos los errores de validación correspondiente, según corresponda.

Para que no nos acusen de aburridos a los programadores, incluiremos algunas gráficas para ilustrar el post :-). No tienen la gracia de los comics habituales en Cristalab, pero bue... ¡Se aceptan dibujantes!, jeje


Ahora nos interesa configurar páginas con acceso restringido, es decir páginas únicamente accesibles por usuarios logueados a nuestro sistema (y no el público general).

La estrategia que seguiremos es la siguiente. Cuando el usuario logra hacer login en nuestro sistema, le activaremos una variable de sessión especificando que es un usuario "habilitado".
Luego, al inicio de cada página que nos interese subir contenido restringido, consultaremos si el usuario tiene activada la variable de sessión "habilitado". En caso que si, lo dejamos pasar y ver el contenido restringido. En caso que no, le mostramos un mensaje de error y lo invitaremos a efectuar el login.

Recordemos que las variables de sessión son un recurso muy valioso que disponemos en programación web. Se trata de variables cuyos valores quedan almacenados en "memoria"
(directorio temporal del servidor, cookies, tablas en base de datos; dependiendo el lenguaje y servidor en que trabajemos) y podemos consultarlas desde cualquier página de nuestro sistema (sin necesidad de transmitirlas a través de parámetros).

Distinto ocurre con las variables normales (denominadas de alcance local) que nos sirven para consultarlas en la página actual donde nos encontremos. Puedo cuando nos dirigimos a una nueva página, perdemos su valor (excepto que lo transmitamos por parámetro).

En nuestro script de login, teníamos un método "login" en el controlador llamado "php". Cuando el usuario lograba ingresar, hacíamos lo siguiente:

Código PHP :

echo "Validacion Ok<br><br><a href=''>Volver</a>";   //

Esto lo reemplaremos por:

Código PHP :

$this->load->library('session'); // cargamos la librería para sessiones del framework php CodeIgniter
$info_usuario=array(
   'habilitado' =>TRUE 
);
$this->session->set_userdata($info_usuario); // configuramos la variable de sessión 'habilitado'
$this->load->helper('url'); // cargamos el helper url del framework php Codeigniter, necesario para la próxima sentencia
 redirect('php/AccesoRestringidoFrameworkPhpCodeigniter', 'refresh'); // habiendo confirmado que el usuario está habilitado, lo direccionamos hacia la página de contenido restringido.

Luego, dentro del controlador "php" crearemos un nuevo método llamado "AccesoRestringidoFrameworkPhpCodeigniter" y cuyo código es el siguiente:

Código PHP :

function AccesoRestringidoFrameworkPhpCodeigniter(){
   $this->load->library('session'); // cargamos la librería para sessiones del framework php CodeIgniter
   !isset($this->session->userdata['habilitado'])?   die('Página con acceso restringido. <a href="./login">Click aquí para hacer login</a>')   :   ''; // si el usuario no tiene activada la variable de sessión "habilitado", detenemos la ejecución del programa y presentamos mensaje de error.
   $this->load->view('escritorio'); // si la ejecución del script llegó hasta aquí, significa que el usuario puede hacer un login válido, por lo tanto cargamos una vista de bienvenida al sistema.
}


En cada página que nos interese configurar contenido restringido, tenemos que crear un método similar a "AccesoRestringidoFrameworkPhpCodeigniter" (asegurarse siempre de incluir la sentencia para cargar la clase de sessión del framework php Codeigniter y controlar que el usuario tenga activada la variable de sessión "habilitado").

Por último, creamos un método para hacer el logout (cerrar sessión):

Código PHP :

function FrameworkPhpCodeigniterCerrarSession(){   
   $this->load->library('session');
   $this->session->unset_userdata('habilitado'); // desactivamos la varialble de session "habilitado". Equivale a dejar sin acceso al usuario.
   $this->login();
}

En todos los fragmentos de código se incluyen comentarios en cada sentencia explicando que hace :-). Si tienes dudas o consultas, por favor deja un comentario y lo revisamos juntos.

Ver demo de página con acceso restringido en el script de login desarrollado mediante el framework php Codeigniter.

Por Blogdephp

Claber

171 de clabLevel

2 tutoriales

 

Programador web php

firefox
Citar            
MensajeEscrito el 22 Jun 2011 07:46 pm
amigo esta buenisimo pero primero quiero apreder php jajajajaj

Por Rogovil

3 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 22 Jun 2011 10:14 pm
Hola Roger, gracias por participar en el tuto!

Si te estás iniciando en php te recomiendo el siguiente tuto:
http://www.cristalab.com/tutoriales/tienda-virtual-e-commerce-en-php-c97238l/

Se trata de un ejemplo práctico donde desarrollamos una tienda on-line (e-commerce) en php. Allí se aplican (y explican) conceptos fundamentales del lenguaje php tales como (ingreso y captura de datos a través de un formulario, variables de session, utilización de variables convencionales, utilización de arrays, etc).

El tuto incluye el código fuente del script, la explicación y una demo on-line para comprobar su funcionamiento.

Allí tenés buena info para comenzar :-)
Un saludo.-

Por Blogdephp

Claber

171 de clabLevel

2 tutoriales

 

Programador web php

chrome
Citar            
MensajeEscrito el 01 Jul 2011 03:20 pm
Hay varios puntos por lo que no paso esto a portada:

  1. Divagas mucho en la explicación, todo se puede decir en menos palabras.
  2. Me parece una continuación del anterior tutorial, de hecho debiste unirlos
  3. Como consejo crea nombre de metodos cortos y descriptivos; no pongas frases como nombre de métodos. De hecho, deberías apegarte a los estandares y convencionalismo de codificacion de CodeIgniter



saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 01 Jul 2011 09:50 pm
Hola Maikel, gracias por tus sugerencias. Lo tendré en cuenta para la próxima.

Ocurre que muchos usuarios me han consultado sobre cómo hacer el reconocimiento del usuario durante toda su estadía en el sistema. El tuto inicial sólo explicaba como verificar si el usuario y password existian en la base de datos y cómo dejarlo ingresar a la 1er pantalla de la sección privada.

Me parecío que hacerlo todo en el tuto inicial iba a quedar muy extenso y pesado para la lectura. Más aún si consideramos que tenemos planificado agregar más funcionalidades a éste script de login en los próximos meses.

¿Tu piensas que si lo hacemos más resumido y con nombre de métodos más cortos podriamos pasarlo a portada?

Por Blogdephp

Claber

171 de clabLevel

2 tutoriales

 

Programador web php

firefox
Citar            
MensajeEscrito el 07 Feb 2012 04:19 pm
Buenos días.

Estoy desarrollando en CodeIgniter, el problema con el que me encuentro es cuando destruyo una sesión de un usuario X y le doy clic en el botón atrás me sigue mostrando la pagina con los permisos de usuario y su información. Como le puedo hacer para que esto no suceda en mi aplicación :( :shock: .

Por nada mas por el momento me despido, les mando saludos.

Por shakal_tec

0 de clabLevel



 

msie8
Citar            
MensajeEscrito el 07 Feb 2012 06:21 pm

Blogdephp escribió:

¿Tu piensas que si lo hacemos más resumido y con nombre de métodos más cortos podriamos pasarlo a portada?


Sí, definitivamente. Solo no abras un nuevo post, publicalo aquí como respuesta y yo me encargo de editar el "original"

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.