- Crea una tabla usuario en tu base de datos con por lo menos tres campos:
Código:
usuario
+----------+-------------------------+
| campo | descripción |
+----------+-------------------------+
| id | llave primaria |
+----------+-------------------------+
| usuario | nombre de usuario |
+----------+-------------------------+
| password | contraseña (encriptada) |
+----------+-------------------------+
- Crea una página para iniciar sesión con un formulario para capturar el usuario y su contraseña:
Código:
+- Inicio de sesión ------------+ method='post'
| | action='sesion.inicio.php'
| Usuario [ usuario ] |
| |
| Contraseña [ password ] |
| |
+-------------------------------+
[Enviar datos]
- Crea un script sesion.inicio.php que reciba los datos del formulario. En este script:
- Buscas al usuario en la tabla usuario
- Encriptas la contraseña que te dan y la comparas con la que está guardada en la tabla (que debe tener el mismo tipo de encriptación)
Un esbozo del script:
Código PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Tomamos los datos del formulario
$usuario = isset($_SERVER['usuario']) ? $_SERVER['usuario'] : '';
$password = isset($_SERVER['password']) ? $_SERVER['password'] : '';
// Evitamos inyección SQL
if (!get_magic_quotes_gpc())
{
$usuario = mysql_real_escape_string($usuario);
}
// Conectamos con el servidor
mysql_connect('host', 'user', 'password') or
die('No ha sido posible conectarse al servidor');
mysql_select_db('base de datos') or
die('No ha sido posible seleccionar la base de datos');
// Buscamos al usuario
$filas = mysql_query("select * from usuario where usuario = '$usuario'") or
die('Ha habido un problema al enviar una consulta a la base de datos');
if (!$fila = mysql_fetch_assoc($filas))
{
die('Nombre de usuario o contraseña incorrecta');
}
// Comparamos las contraseñas (usamos el algoritmo sha1)
if (sha1($password) != $fila['password'])
{
die('Nombre de usuario o contraseña incorrecta');
}
// Iniciamos sesión PHP y guardamos el nombre de usuario
session_start();
$_SESSION['usuario'] = $usuario;
// Vemos si hay que redirigir a alguna página o mandamos a alguna por defecto
$destino =
isset($_SESSION['destino']) ? $_SESSION['destino'] : 'default.php';
unset($_SESSION['destino']);
header("location: $destino");
}
?>
- Creas un script sesion.validar.php que deberás incluir (con require o require_once) en cada página a la que quieras restringir el acceso.
Código PHP:
<?php
// Iniciamos sesión PHP
session_start();
// Si no hay un usuario registrado, mandamos a la página de inicio
if (!isset($_SESSION['usuario']))
{
// Guardamos la dirección de la página actual para saber a donde redirigir
// una vez que se inicie la sesión en el sistema.
$_SESSION['destino'] = $_SERVER['PHP_SELF'];
header("location: inicio.php");
}
?>
Esta es sólo una idea general y muy básica que deberás adaptar a tus necesidades.
// Saludos