Buenas noches,
despues de googlear y buscar en foros los posibles errores que tengo en el código, no he conseguido dar con la tecla y os voy a exponer aqui el codigo para ver si me podeis echar una mano.
Tengo 5 archivos, los cuales 2 son para insertar usuarios, el formulario y otro de creación. Estos dos van bien. El problema se presenta cuando intento hacer un logout del usuario que esta navegando. Lo primero esque solo existen 2 usuarios (no habra mas), el crear usuario esta deshabilitado.
En login.php
Código PHP:
<?
session_start();
if(isset($_SESSION)){
header("location:user.php"); /* Si ha iniciado la sesion, vamos a user.php */
} else {
/* Cerramos la parte de codigo PHP porque vamos a escribir bastante HTML y nos será mas cómodo así que metiendo echo's */
?>
<html><head><title>Necesita identificación! </title></head>
<body>
<center><h1>Identificate! :D </h1></center>
<form action="file:///Macintosh HD/Users/ijnavas/Desktop/usuarios/comprueba.php" method="POST">
Login: <input type="text" name="login"><br>
Password: <input type="password" name="pass"><br>
<input type="submit" value="Entrar">
</form>
</body></html>
<?
} /* Y cerramos el else */
?>
En comprueba.php (comprobamos aqui los usuarios)
Código PHP:
<?
session_start();
$server="ave"; /* Nuestro server mysql */
$database="xxx"; /* Nuestra base de datos */
$dbpass="xxx"; /*Nuestro password mysql */
$dbuser="xxx"; /* Nuestro user mysql */
/* Primero comprovamos que no existe un usuario con el mismo login ya registrado */
$login = $_POST['login'];
$pass = $_POST['pass'];
$query="SELECT * FROM usuarios WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)==0){
echo "No existe el login introducido";
} else {
$array=mysql_fetch_array($result);
if($array["password"]==crypt($pass,"semilla") ){
/* Comprobamos que el password encriptado en la BD coincide con el password que nos han dado al encriptarlo. Recuerda usar la misma semilla para encriptar los dos passwords. */
$_SESSION['prueba']='essto es una prueba';
$_SESSION["login"]=$login;
$_SESSION["nombre"]=$array["nombre"];
$_SESSION["apellidos"]=$array["apellidos"];
session_register("SESSION");
header("location:user.php");
} else {
echo "Password incorrecto!";
} /* Cerramos este ultimo else */
} /* Cerramos el else que corresponde a la comprobación de que el login existe */
?>
y por ultimo el user.php (la zona restringida)
Código PHP:
<?
session_start();
if(!isset($_SESSION)){
header("location:login.php");
} else {
echo "<html><body>";
echo "Bienvenido ";
echo $_SESSION["nombre"]." ";
echo $_SESSION["apellidos"];
echo "<br>Has entrado con el nombre de ";
echo "klkl";
echo $_SESSION["login"];
echo $_SESSION['prueba'];
echo "<br>Para cerrar la sesión, pulsa: <a href='logout.php'>logout</a>";
echo "</body></html>";
}
?>
logout.php
Código PHP:
<?
session_start();
if(!isset($_SESSION)){
header("location:login.php");
} else {
unset($_SESSION["SESSION"]);
session_unset();
session_destroy();
echo "Las variables de sesión han sido eliminadas, y la sesión se ha dado por finalizada correctamente ;-)";
}
?>
que es lo que ocurre? que la sesion lleva abierta si como 8horas, he intentado cerrarla, destruirla, matarla, machacarla.... me falta pegarle un tiro o ponerle una bomba en el ordenador. no ha manera.
Tambien he hecho varias pruebas a la hora de pasar variables con las sesiones y no me funcionan, esto porque es?
Gracias por la ayuda!
PD: el codigo no es elaboracion propia, he modificado uno.