PHP - autenticación

 
Vista:

autenticación

Publicado por carla (5 intervenciones) el 01/07/2010 16:42:27
Estoy intentando hacer la autenticacion de usuarios. Tengo una pagina a la que quiero acceder siendo necesaria la autentificacion. El código es el siguiente:

<?include ("seguridad.php");?>
<html>
<head>
<title>Aplicación segura</title>
</head>
<body>
<h1>Ahora estás en una aplicación segura</h1>
<br>
<a href="salir.php">Haz click aquí para salir</a>
</body>
</html>

Al abrir aplicacion. php, me redirecciona a la página de autenticacion pero tanto si usuario y contraseña coinciden como si no, no vuelve a la página de aplicacion.php en caso de coincidir o index.php en caso de no coincidir.

El código de index. php que es el formulario donde se introducen los datos del usuario y contraseña:

<html>
<head>
<title>Autentificación </title>
</head>
<body>
<h1>Autentificación </h1>
<form action="control.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET["errorusuario"]=="si"){?>
bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>
<?}else{?>
bgcolor=#cccccc>Introduce tu clave de acceso
<?}?></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>
<a href="salir.php">Salir</a>
</body>
</html>
control.php: código que comprueba si los datos son correctos y debe redireccionar de nuevo a la aplicación si los datos introducidos estan en base de datos o vuelve a la página de autenticación en caso de no coincidir los datos.

<?
session_start();
include "conexion.php";
ini_set("session.use_trans_sid","0");
ini_set("session.use_only_cookies","1");

$usuario= $_POST['usuario'];
$contrasenya = md5 ( $_POST['contrasena'] );
$ssql = "SELECT * FROM usuarios WHERE usuario='$usuario' and contrasenya='$contrasenya'";
$rs = mysql_query($ssql,$enlace);
if (mysql_num_rows($rs)!=0){
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: aplicacion.php");
}else {
header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>

A ver si me podeis echar una mano.
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:autenticación

Publicado por Carles (17 intervenciones) el 08/07/2010 11:39:37
Hola Carla,

No sé si es el único error pero sí que es importante: Mira esto:

if (mysql_num_rows($rs)!=0){
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: aplicacion.php");
}else {
header("Location: index.php?errorusuario=si");
}

Si ves la segunda línea verás un "session_start()". Esta instrucción sólo puede ir una vez en cada archivo, y siempre al principio de todo el código

Igual el problema está en seguridad.php, pero creo que no has puesto el código.

Un saludo.
Xatcom.net
Diseño web
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:autenticación

Publicado por Carla (5 intervenciones) el 14/07/2010 17:36:15
Hola, muchas gracias Carles por contestar.

Sigue igual al quitarle la línea que aparece por segunda vez.
Al introducir los datos de autenticación no vuelve a aplicacion.php sino que se queda en control.php mostrando la página en blanco. El codigo de seguridad.php es este:

<?php
session_start();

//antes de hacer los cálculos, compruebo que el usuario está logueado
//utilizamos el mismo script que antes
if ($_SESSION["autentificado"] != "SI") {
//si no está logueado lo envío a la página de autentificación
header("Location: index.php");
} 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
if($tiempo_transcurrido >= 600) {
//si pasaron 10 minutos o más
session_destroy(); // destruyo la sesión
header("Location: index.php"); //envío al usuario a la pag. de autenticación
//sino, actualizo la fecha de la sesión
}else {
$_SESSION["ultimoAcceso"] = $ahora;
}
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar