PDA

Ver la versión completa : Usuario y contraseña en pagina php



rutame
25-04-2008, 22:15
Hola a todos.
Estoy haciendo una web en el que pide usuario y contraseña por medio de un formulario y luego valida los usuarios con una base de datos mysql. Uso session y no me funciona nada bien, pues si con el navegador firefox le das a la flecha de ir atras, aun cerrando la sesion, vuelves al panel de administracion.

El codigo que tengo es este:



Pagina que pide usuario y contraseña usa el metodo post.

y enlaza con la pagina comprueba.php que lleva este codigo:

<?php

include ('conecta.php');

$consulta = "SELECT * FROM usuarios WHERE nombre = '$usuario' AND clave = '$password'";

$resultado = mysql_query( $consulta ) or die( mysql_error() );

$datos = mysql_fetch_array( $resultado );



if($datos['nombre'] != $usuario or $datos['clave'] != $password or empty($datos['nombre']))

{



echo "datos incorrectos ";

echo "<a href=administracion_entrada.php> Volver a administración</a>";

exit();

}



elseif ($datos['nombre']=$usuario AND $datos['clave'] = $password AND $datos['nivel']>='10')

{



// Inicias la sesion

session_name('nueva');

session_start();

$_SESSION['usuario'] = $datos['nombre'];

$_SESSION['estado'] = 'Autentificado';

// Muestras el contenido de la pagina

include ('panel.php');



}







elseif ($datos['nombre']=$usuario AND $datos['clave'] = $password AND $datos['nivel']<='10')

{

// Inicias la sesion

session_name('nueva');

session_start();

$_SESSION['usuario'] = $datos['nombre'];

$_SESSION['estado'] = 'Autentificado';

// Muestras el contenido de la pagina

include ('panel.php');

}







?>





Para cerrar la sesion uso otra pagina cerrar_sesion.php que lleva este codigo:



<?php
session_start();
//$_SESSION = array();
//session_unset();
session_unregister('nueva');
//unset($_session['nueva'])

session_destroy();

//Header ("Location: administracion_entrada.php");

echo"Sesion Cerrada - <a href=administracion_entrada.php>Volver</a>";







?>




Bueno pues la cuestion es que no cierra la sesion como ya decia pues si le das atras vuelves al panel.

Si alguien me echa un cabo con esto o me dice otra forma de hacerlo le quedaria muy agradecido.

Saludos

KaoS
28-04-2008, 04:54
Posiblemente siga mostrandote el panel porque esté almacenado en caché. ¿Has probado a refrescar la página a ver si sigues dentro?

Osea cada página que necesite autentificación tiene que comprobar si la sesión está abierto y sino redireccionar al cliente a la página que sea.

Salu2

rutame
09-05-2008, 21:25
Hola kaos,

Cuando le doy a la flecha de volver atrás me da el mensaje correcto no dejandome entrar pero si le das varias veces sale un mensaje diciendo que va a enviar postdata y si aceptas vuelve a entrar, como si volviese a iniciar sesion.

La verdad es que esto es mosqueante pues como ya decia si haces lo mismo con internet explorer no ocurre.

Si quieres lo puedes comprobar en una web de pruebas que me estoy haciendo en http://motor.grafycomp.com

j8k6f4v9j
10-05-2008, 11:05
Si reenvías el postdata es normal que vuelva a entrar, ya que le estás volviendo a pasar las credenciales correctas.

Salu2

Markitos1024
19-05-2008, 14:23
Hola mira yo no trabajo como programador php pero hoy en dia php es moneda corriente.
pero ese codigo parece estar bien tu problema esta en el codigo del panel ahi no pareces verificar la session o por lo menos no nos cuentas nada

<?php
session_start();
if (!(isset($_SESSION['estado']))) {
include("redirect.php");
exit;
}
?>

donde redirect.php tenga algo asi

<?php
echo "<html> <head><title> whop's </title> </head><body>";
echo "<script language='javascript'>document.location = 'http://motor.grafycomp.com/'</script>";
echo "</body></html>";
?>

bueno espero ayudarte saludos !!!

rutame
19-05-2008, 23:50
Muchas gracias a todos, voy a probarlo y ya les cuento.

Saludos