Clase PHP login simple con cookies

Categories: PHP - Tags:

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
<?php
session_start();
include("login.class.php");
$login=new login();
$login->inicia();
?>

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

8 Responses to Clase PHP login simple con cookies

  1. Fulano says:

    Como seria para destruir la sesion y los cookies?

  2. admin says:

    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);

  3. Cristian says:

    Como haria para comprobar el usuario y la contraseña de la base de datos??

  4. Miquel says:

    Hola Miguel, excelente blog. Estoy aprendiendo mucho con tus posts sobre php, jquery y web (soy nuevo en esto del diseño web).
    He probado tu sistema y he añadido un logout que hace el session_unset(), session_destroy() y hago caducar la cookie con setcookie(\

  5. Bernardo says:

    Saludos cordiales ante todo, podrias postear un script para finalizar la sesion que probado de todo y nada que destruye la sesion ni el cookie
    aqui el codigo:
    session_start();session_unset($_SESSION["usr"],$_SESSION["idusuario"]);
    setcookie(“idusuario”,$idusuario,time()-60);
    session_destroy();

  6. noe says:

    genial lo que buscaba muchas gracias

  7. Paolo Dellepiane says:

    Esto es lo que necesitas para hacer un logout:
    logout.php

    y debes de cambiar todo el contenido del body de logeado.php por:
    Estas logeado

    Y listo!

  8. David says:

    Hola tambien tengo problemas para hacer un logout, he probado con todo y nada. Que puedo hacer?

Leave a Reply

Your email address will not be published. Required fields are marked *

*


− 6 = null

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>