abr 23, 2009

Enviado por en PHP

Sistema sencillo de login en PHP

En esta entrada veremos como crear un sistema de login el cual pida una contraseña, a cada pagina que especifiquemos en PHP y recordar contraseña por medio de una cookie. Con cifrado md5

lock

Pues basicamente este script se incorpora en 4 partes:

  • Sistema de inicio de sesion (llamado login de ahora en adelante)
  • Sistema de cerrar sesion (llamado logout de ahora en adelante)
  • Creador de Cookie
  • Pagina que necesite que estes login

Teoria:

En pocas palabras se supone que uno va a escribir una contraseña en la pagina de login, despues de eso te va a redirigir a la pagina que necesite contraseña, si no teines contraseña te regresara al login, y también una pagina destinada para logout.

Login.php

Basicamente lo que se va a hacer aqui es una comprobación de variables, comparar la contraseña establecida (y encriptada automaticamente en md5) con lo que sea que haya escrito el usuario (tambien codificado en md5), y en caso de ser iguales crear la etiqueta de la cookie que le permite acceder a test.php o en caso contrario mandar una advertencia mediante javascript.

<?php
session_start(); //crea la cookie
if(isset($_POST['login']))
{

$completa = $_POST['pass'];
$comparar = md5 ($completa); //codifica lo escrito en md5
$clave = 'kernelerror'; //Reemplazar por tu contraseña
$final = md5 ( $clave );  //la codifica md5
if ( $comparar == $final ) {
    $_SESSION['listo'] = true;
    header('Location: test.php'); //redirige a la pagina despues de inicias sesion
    exit;
} else
{
?>
<script type="text/javascript">
<!--
alert('Contraseña Incorrecta')
//-->
</script>
<?php
}
}
//continua en el siguiente bloque?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> Identificate </title>
</head>
<body>
<center>
Palabra Clave:<br>
<form method="post" action="">
<input type="password" name="pass">
<input type="submit" name="login" value="INICIAR SESION">
</form>
</center>
</body>
</html>

Cookie.php

Aqui lo que se hace es ver si existe la cookie creada en el login y si es positivo continuar, o en caso negativo regresar a una pagina deseada.

<?php
session_start();
if (!isset($_SESSION['listo'])
    || $_SESSION['listo'] !== true) {
    header('Location: login.php'); //Redirige al inicio de sesion en caso de que no tengas la cookie
    exit;
}
?> 

Test.php

<?php session_start(); require 'cookie.php'; //continua en el siguiente bloque?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
   <title>Estas dentro</title>
</head>

<body>
<h1> SI puedes ver esto, lograste iniciar sesion</h1>
<br />
<a href="logout.php">Cerrar sesion</a><a href="http://kernelerror.net">Regresar a la entrada</a>

Este es un pequeño archivo para comprobar que si funciona el login (ver que sea requerido el cookie).

Logout.php

<?php
session_start();
if (isset($_SESSION['listo'])) {
   unset($_SESSION['listo']);
}
header('Location: login.php');
exit;
?> 

Con este archivo desactivas la cookie asi forzando a volver a ingresar los datos si quieres ver el contenido con cookie.php incluido.

Acontinuacion el ejemplo
(La password es kernelerror)

    Posts Relacionados

    1. Por demas decir que esta super util.. muy bueno bacho.

      Usando IceWeasel 3.0.7 IceWeasel 3.0.7 en Debian GNU/Linux Debian GNU/Linux
      • Si.. cabe mencionar que este sistema no pide contraseñas a una base mysql por lo que es dificil para multiusuarios…

        :D ya viste el nuevo sistema de respuesta en comentarios?

        Usando Firefox 3.0.7 Firefox 3.0.7 en PCLinuxOS 2007 PCLinuxOS 2007
      • Si, esta fino bacho :D

        Usando Firefox 3.0.8 Firefox 3.0.8 en Ubuntu 8.10 Ubuntu 8.10
    2. avatar
      manuel varguez dice:

      buen ejemplo.

      solo un detalle con lode login y logout: con Opera al ingresar al sitio y cerrar la sesion regresando a la pagina para introducir la contraseña, al apretar el boton “hacia atras del navegador” es posible ver el contenido “secreto”.

      imagino que opera recarga la pagina con su cache. aun asi es un defecto con el cual aun estoy lidiando.

      me agradaria saber si es que eso tiene alguna solucion.
      saludos!!

      Usando Firefox 3.0.10 Firefox 3.0.10 en Windows XP Windows XP
      • Pues en efecto, este error se debe a que pide el contenido desde la Cache, siento decirte pero este contenido es para contenido de referencia, por lo que no es su proposito en todo caso ser un sistema de login “real”, sino explicar el funcionamiento de las cookies, y como se pueden crear sistemas con estas.

        Lo que sucede al dar boton “atras” en cualquier anvegador loq ue ahce esque también recrea la cookie, por lo que no es problema del programa ni del navegador, solo se trata de una función extra para ahorrar tiempo…

        Porfavor dime si este error te sucede en el ejemplo http://kernelerror.net/editables/login/test.php

        Usando IceWeasel 3.0.9 IceWeasel 3.0.9 en Debian GNU/Linux Debian GNU/Linux

    Dejar una respuesta

    Debes ser Alojarse para enviar un comentario.