Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/02/2012, 18:29
rKNeko
 
Fecha de Ingreso: julio-2010
Mensajes: 14
Antigüedad: 14 años, 4 meses
Puntos: 0
Sesiones en php

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.