Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/01/2007, 03:34
upatseb
 
Fecha de Ingreso: mayo-2006
Mensajes: 10
Antigüedad: 18 años
Puntos: 0
Problemas con autentificación de usuarios

Tengo un problema con mi sistema de autentificación de usuarios, me da el siguiente error:

Notice: Undefined index: autentificado in c:\inetpub\wwwroot\php\2007\seguridad.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\php\2007\seguridad.php:6) in c:\inetpub\wwwroot\php\2007\seguridad.php on line 8

Si voy hacia atrás y vuelvo a meter usuario y contraseña entra perfectamente pero a la primera falla. Seguro que es alguna tontería que he pasado por alto.

El código que comprueba usuario y crea sesión es el siguiente:

<?
session_start();
header("Cache-control: private"); // Arregla IE 6

//conecto con la base de datos, OJO, estos datos los he cambiado para el foro, entra bien a la BD
$conn = mssql_connect("servidor","usuario","password");
//selecciono la BBDD
mssql_select_db("web");

//Sentencia SQL para buscar un usuario con esos datos
$usuario=$_POST["usuario"];
$contrasena=$_POST["contrasena"];
$ssql = "SELECT url, nombre_usuario FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$contrasena'";

//Ejecuto la sentencia
$rs=mssql_query ($ssql);

//usuario y contraseña válidos
//defino una sesion y guardo datos
if (mssql_num_rows($rs)!=0){

session_register("autentificado");
$_SESSION["autentificado"]= "SI";
//defino la fecha y hora de inicio de sesión en formato aaaa-mm-dd hh:mm:ss
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
// Guardo usuario, URL principal del usuario y mando a URL del usuario
$row=mssql_fetch_array($rs);
session_register("nombre_usuario");
$_SESSION["nombre_usuario"]= $row[1];
session_register("url_usuario");
$_SESSION["url_usuario"]= $row[0];
// Lá página del usuario lanza justo en la primera linea el fichero seguridad.php que pongo después en este mensaje
header ("Location: ".$row[0]);

}else {
session_unset();
session_destroy(); // destruyo la sesión
//si no existe le mando otra vez a la portada
header("Location: login.php?errorusuario=si");
}

mssql_close($conn);

?>

Depués en cada página restringida lanzo este código en la primera linea para comprobar que se ha autentificado previamente, esta página es la que me da problemas (seguridad.php):

<?
session_start();
header("Cache-control: private"); // Arregla IE 6

//antes de hacer los cálculos, compruebo que el usuario está logueado
if ($_SESSION["autentificado"] != "SI") {
//si no está logueado lo envío a la página de autentificación
header("Location: login.php");
//ademas salgo de este script
exit();
} else {
//sino, calculamos el tiempo transcurrido
$fechaGuardada = $_SESSION["ultimoAcceso"];
$ahora = date("Y-n-j H:i:s");
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));

//comparamos el tiempo transcurrido en SEGUNDOS
if($tiempo_transcurrido >= 600) {
//si pasaron 10 minutos o más
session_unset();
session_destroy(); // destruyo la sesión
header("Location: login.php"); //envío al usuario a la pag. de autenticación
//sino, actualizo la fecha de la sesión
}else {
$_SESSION["ultimoAcceso"] = $ahora;
}
}
?>

Gracias