Este es un ejemplo de una clase para el manejo de login, el objetivo de esta clase es solo didactico para poder usarla en nuestras aplicaciones deberiamos implementar una verificacion de usuario basada en una base de datos, además deberiamos crear un algoritmo de codificacion y decodificacion del id de usuario.
Clase para el manejo de login
Como puedes ver en la linea 25 no esta implementada la verficacion del login con la base de datos eso ya depende de la clase que usas para tu base de datos, puedes probar el script usando usuario=user y clave= password
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php class login { // Inicia sesion public function inicia($tiempo=3600, $usuario=NULL, $clave=NULL) { if ($usuario==NULL && $clave==NULL) { // Verifica sesion if (isset($_SESSION['idusuario'])) { //echo "Estas logeado"; } else { // Verifica cookie if (isset($_COOKIE['idusuario'])) { // Restaura sesion $_SESSION['idusuario']=$_COOKIE['idusuario']; } else { // Si no hay sesion regresa al login header( "Location: index.php" ); } } } else { $this->verifica_usuario($tiempo, $usuario, $clave); } } // Verifica login private function verifica_usuario($tiempo, $usuario, $clave) { if ($usuario=="user" && $clave=="password") { // Si la clave es correcta $idusuario=$this->codificar_usuario($usuario); setcookie("idusuario", $idusuario, time()+$tiempo); $_SESSION['idusuario']=$idusuario; header( "Location: logeado.php" ); } else { // Si la clave es incorrecta header( "Location: index.php?error=1" ); } } // Codifica idusuario private function codificar_usuario($usuario) { return md5($usuario); } } ?> |
Formulario del login index.php
Usamos un formulario simple que invocará al archivo login.php para generar la sesión o enviar un codigo de error
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php session_start(); ?> <form name="frm_login" method="post" action="login.php"> Usuario: <input type="text" size="10" name="user" /><br /> Clave: <input type="text" size="10" name="pass" /> <input type="submit" name="submit" value="Login" /> </form> <?php if (isset($_GET['error'])) { echo '<b>Usuario o clave incorrecta</b>'; } ?> |
login.php
Este archivo nos servirá de puente para iniciar o no la sesión
1 2 3 4 5 6 | <?php session_start(); include("login.class.php"); $login=new login(); $login->inicia(3600, $_POST['user'], $_POST['pass']); ?> |
Nuestros archivos protegidos
Para proteger cualquier archivo del acceso por parte de usuarios no logeados basta agregar las siguientes lineas de codigo al inicio
1 2 3 4 5 6 |
Por regla de php estas lineas que verifican la sesion deben estar antes de cualquier codigo html y de espacios en blanco, de lo contrario generará el error “Headers already sent”
Para verificar que nuestro script funciona correctamente podemos instalar una extensión de firebug llamada Firecookie que nos permite revisar las sesiones y cookies























Como seria para destruir la sesion y los cookies?
Sería usando session_unset(); y session_destroy(); Para borrar las cookies hay que cambiarles la fecha de caducidad a un segundo, algo como setcookie(“UserActive”,$miuser,time()-60);
Como haria para comprobar el usuario y la contraseña de la base de datos??