martes, 12 de enero de 2010

Sistema de logeo simple en PHP

En este artículo haremos un sistema de logeo simple que iremos mejorando en artículos posteriores para lograr un sistema muy seguro.
Utilizaremos sesiones, sessions en inglés, para mantener al usuario “logeado” mientras navega por nuestra web ya sea en páginas de acceso restringido o no.

Nota: explicaré mínimamente el uso de sesiones pero no entraré en detalles, sí en un futuro artículo.

Para iniciar una sesión en PHP se utiliza la función “session_start()”, ejemplo

<?php
// Inicialización de la sesión.
session_start();
?>
De esta forma se le asignará a cada usuario un “id” único que es guardado en el navegador. Para imprimir el id de la sessión se utiliza “session_id()”, ejemplo

<?php
// Inicialización de la sesión.
session_start();
echo session_id();
?>

Bien, ya tenemos la sesión inicializada, este código debe estar en todas las páginas del site, por lo que podría estar al comienzo en un archivo config.php por ejemplo incluido en todos los demás archivos.
Pasemos ahora al script de logeo.
Ya tendríamos que tener echo el formulario que envía por ejemplo el usuario y la contraseña al script, ejemplo:

<form action=”login_script.php” method=”post”>
<p>Usuario: <input type=”text” name=”usuario” /></p>
<p>Contrase&ntilde;a: <
input type=”password” name=”password” /></p>
</form>

En el archivo “login_script.php” primeramente deberíamos comprobar que los datos que vienen del formulario sean los correctos:

<?php
// Incluimos el archivo config.php donde esta
inicializa la sesión.
include_once (“config.php”);
// Primeros comprobamos el usuario.
if ($_POST[‘usuario’] == “matias” && $_POST[‘password’] == “123456”)
{
 // Si es correcto comprobamos la contraseña.
 // Si ambos datos son correctos guardamos estos datos en la sessión.
 $_SESSION[‘logeado’] = “SI”;
 $_SESSION[‘usuario’] = “matias”;
 // Redijimos a la página correcta.
 header (“Location: zona_restringida.php”);
}
else
{
// Si alguno de los datos ingresados son incorrectos redirigimos a la página de
// error o de nuevo al formulario de ingreso.
header (“Location: login.php”);
}
?>

Bien, en este código se ve lo siguiente, primeramente incluimos el archivo config.php donde hemos inicializado la sesión. Luego una simple forma de verificar que los datos enviados desde el formulario por “POST” sean lo que realmente queremos que sean.
Si los datos son correctos redijimos a la página donde se encuentra material solo para usuarios logeados, de lo contrario a la página donde se encuentra el formulario de logeo para que lo intente nuevamente.
Para guardar un dato en la sesión, como vimos utilizamos $_SESSION[‘nombre_de_la_sesion’] = “Valor”.
Ahora simplemente en el archivo donde hay acceso restringido, “zona_restringida.php” podemos preguntar
si el valor guardado en la session “logeado” es igual a “SI”.

<?php
// Incluimos el archivo config.php donde esta inicializa la sesión.
incluye_once (“config.php”);
// Comprobamos que el valor de la sesion “logeado” es igual a “SI”.
If ($_SESSION[‘logeado’] != “SI”)
{
 // Si el valor en logeado es “distinto” a “SI”
 // Redigimos a login.php para que vuelva a entrar.
 header (“Location: login.php”);
 // Escapamos para que no muestre más nada.
 exit();
}

// Si llegamos aquí es por realmente el valor de la sesión “logeado” es “SI”
// Imprimimos el valor de la sesión que contiene el nombre del usuario.
echo “Hola “ . $_SESSION[‘usuario’];
?>

Podemos utilizar este fragmento código en todas las páginas donde queramos que para ser visualizadas el usuario deba estar logeado.
Bueno, hasta aquí el primer artículo con una forma simple de login. En el próximo utilizaremos base de datos para que cada usuario tenga un nombre de usuario y contraseña diferentes.
Saludos,

No hay comentarios:

Publicar un comentario