Usuarios
Esta parte me parece de lo mas interesante, aunque en esta pagina, al ser divulgativa no vamos a usarlo. No obstante lo explico porque se usa en cualquier pagina con acceso a usuarios registrados.
Para empezar, tendremos un formulario tal que este:
Cuyo codigo es HTML este:
De momento no hagas caso a lo que hay en value, es un array PHP que contiene datos.
Explico a continuacion este script, que realiza la validacion de usuarios.
Guardamos en la variable $return la pagina a la que retornaremos si nos loggeamos.
Crearemos dos arrays, el array fields lo dejaremos asi, y en el array errorMessages guardaremos los mensajes de error que se mostraran en caso de dejar alguno de los campos libres.
Con el bucle if recogemos los datos del formulario y miramos que si hay errores, en ese caso se mostrara el mensaje oportuno. De lo contrario, es decir, en (!$errors) validaremos el email y la contrasena. De ser correcta iniciaremos variables de sesion y retornaremos a la pagina que contenga la variable $return.
$return = 'register.php';
if (isset($_GET['return']))
{
$return = $_GET['return'];
}
$fields = array();
$fields['email'] = '';
$fields['pass'] = '';
$fields['remember'] = 'off';
$errors = false;
$errorMessages = array();
$errorMessages['email'] = 'Please enter your email';
$errorMessages['pass'] = 'Please enter your password';
if (isset($_POST['action']))
{
foreach ($fields as $key => $val)
{
$fields[$key] = strip_tags(trim($_POST[$key]));
if (empty($fields[$key]))
{
$errors[$key] = $errorMessages[$key];
}
}
if (!$errors)
{
if ('xxxxx@xxxx.com' == $fields['email'] && '*****' == $fields['pass'])
{
$_SESSION['user'] = $fields;
$_SESSION['user']['name'] = 'xxxxx';
$_SESSION['user']['last_access'] = date('r');
header('Location: ' . $return);
}
// redirect to members home
}
}
Esto solo tiene algun sentido si despues, en la paginas del sitio se requiere estar loggeado para verlas. Este requerimiento se hace poniendo al inicio de cada pagina (o en el header) la siguiente linea:
<?
include ('init.php');
$requireLogin = true;
?>
Ahora necesitaremos el script que yo he llamado init.php y que nos comprobara si existe la sesion:
<?
session_start();
if (isset($_SESSION['user']))
{
if (strtotime($_SESSION['user']['last_access']) < strtotime('now - 10 mins'))
{
header('Location: /mikel/site2/finish.php');
}
$_SESSION['user']['last_access'] = date('r');
}
if (isset($requireLogin) && $requireLogin && !isset($_SESSION['user']))
{
header('Location: /mikel/site2/index.php?return=' . urlencode($_SERVER['REQUEST_URI']));
}
?>
Vamos a ver lo que hace: Si hay sesion, y hace mas de 10 minutos sin actividad, nos llevara a finish.php, que finalizara la sesion. Si no han pasado mas e 10 minutos, se actualizara la hora de la variable de sesion, pasando a contener la hora de ese momento.
Debajo comprueba que tengamos sesion iniciada, si no es asi, nos lleva sin mas contemplaciones a la pagina index.php, en este caso, o a donde tengamos el formulario de acceso.
Por ultimo, explicar el mas sencillo, que es finish.php
Simplemente cuando se ejecuta finaliza la sesion y redirige a index.php
<?
session_start();
unset($_SESSION['user']);
header("Location: index.php");
?>