La semana pasada, tome de Internet un manual de "Autentificación de usuarios en PHP con sesiones". Este es el que les muestro a continuación:
Fichero index.html
Código HTML:
<html> <head> <title>Autentificación PHP</title> </head> <body> <h1>Autentificación PHP</h1> <form action="control.php" method="POST"> <table align="center" width="225" cellspacing="2" cellpadding="2" border="0"> <tr> <td colspan="2" align="center"> <?php if ($_GET["errorusuario"]=="SI"){?> <p>Datos incorrectos</p> <?php }else{ ?> <p>Introduce tu clave de acceso</p> <?}?></td> </tr> <tr> <td align="right">USER:</td> <td><input type="Text" name="usuario" size="8" maxlength="50"></td> </tr> <tr> <td align="right">PASSWD:</td> <td><input type="password" name="contrasena" size="8" maxlength="50"></td> </tr> <tr> <td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td> </tr> </table> </form> </body> </html>
Código PHP:
<?php
//vemos si el usuario y contraseña es váildo
ini_set("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
if ($_POST["usuario"]=="amedio" && $_POST["contrasena"]=="entrar")
{
//usuario y contraseña válidos
session_start();
$_SESSION['ok']="ok";
//defino la sesion que demuestra que está autentificado
$_SESSION['ultimoAcceso']=date("Y-n-j H:i:s");
//defino la fecha y hora de inicio de sesión en formato aaaa-mm-dd hh:mm:ss<br>
session_write_close();
header ("Location: aplicacion.php");
}else
{
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=SI");
}
?>
Código PHP:
<?php
ini_set("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
//Inicio la sesión
session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);
//cambiamos la duración a la cookie de la sesión será destruida cuando finalice el script
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION['ok'] != "ok") {
header("Location: index.php");
//ademas salgo de este script
session_destroy();
exit();
}
else{
//calculamos el tiempo transcurrido
$fechag=$_SESSION['ultimoAcceso'];
$ahora=date("Y-n-j H:i:s");
$tiempo_trans=(strtotime($ahora)-strtotime($fechag));
//strtotime es para convertir las fechas en segundos
if($tiempo_trans>=300){
//si pasaron 5 min o más
session_destroy();
header("Location:index.php");
//enviamos al usuario al site de autentificación
}else{
//actualizamos la fecha
$_SESSION['ultimoAcceso']=$ahora;
}
}
?>
Código HTML:
<?php include("seguridad.php");?> <html> <head> <title>Aplicación segura</title> </head> <body> <h1>Si estás aquí es que te has autentificado</h1> <br> ---- <br> Aplicación segura <br> ---- <br> <br> <a href="salir.php">Salir</a> </body> </html>
En serio, me tiene parado, esto es para presentar un proyecto para la facultad y estoy con tres lineas absurdas desde hace una semana. Lo único que consigo es que siempre me muestre el index.html.
Gracias a todos/as, y espero sus respuestas