Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2004, 03:55
Avatar de Covids0020
Covids0020
 
Fecha de Ingreso: septiembre-2003
Ubicación: España
Mensajes: 217
Antigüedad: 20 años, 6 meses
Puntos: 1
No puedo cerrar una sesion en hosting, sí en local.

Hola, pues nada, a ver si alguién me puede echar una mano, le he dado mil vueltas al asunto, de todas las soluciones posibles para cerrar sesiones, etc, en el server de mi hosting no va ninguna, en local todas.

He leido algunas cosas sobre la configuración del php.ini, destacar que, creo evidentemente, no tengo acceso al php.ini, pero lo que más he visto ha sido relativo a las cokiees y yo solo uso el identificador de sesión en el navegador, por si no me explico bien: el PHPSESSID (por cierto, se le puede cambiar ese nombre?).

Bueno, al lio, tengo un sistema de usuarios y una vez inician sesión no puedo desconectarlos, de lo que más me extraña es que solo uso session_start() y aún después de haber cerrado el navegador tarda un poco en destruir esa sesión, pero el mayor problema es que mi script de desconexión no va, no los desconecta, en cambio en local sí.

He pensado en la configuración del tiempo de vida de... pero esto no es para las cookies solo???? y aún así, ¿al cerrar el navegador no debería destruir la sesión??, no digo que de inmediato pero tarda bastante y con una sola sesión (un usuario).
Por otra parte, si activo la privacidad de cookies en el navegador, al entrar en mi página me advierte del envio de cookies ... y .. bueno, solo uso session_start(), acaso esta función también envia alguna cookie??.

Bueno, pongo el código de mi logout.php, disculpad su extensión con los comentarios pero lo mismo ayuda.
LOGOUT.PHP:
Código PHP:
<?php
// Si ya esta iniciada la sesion mostramos el contenido protegido
if (($_SESSION[usuario]) or ($_SESSION[admin]))
{
$usuario $_SESSION[usuario];
// Eliminamos el usuario de la tabla de usuarios en linea
mysql_query("DELETE FROM usuarios_activos WHERE usuario = '$_SESSION[usuario]' OR usuario = '$_SESSION[admin]'")
or die(
"Error: ".mysql_error());

// Comprobamos la sesion:
/*echo "Sesion ID: ".session_id()."<br />";
echo "<p>Sesion sin destruir aún: ".$_SESSION[usuario]."</p>";*/

// vaciarla
$_SESSION = array();

/*echo '<p>Paso 1 $_SESSION = array():<br />
Hemos vaciado la variable de sesion, no debería aparecer ningún nombre: '.$_SESSION[usuario].'<br />
Probamos con la variable $usuario: '.$usuario.'</p>';*/

// destruirla
session_destroy();

/*echo '<p>Paso 2 session_destroy():<br />
Por ultimo destruimos la sesion, no debería aparecer ningún nombre: '.$_SESSION[usuario].'<br />
Probamos con la variable $usuario: '.$usuario.'</p>';*/

  // Comprobamos si se destruye
  
if (($_SESSION[usuario]=='')&&($usuario==''))
  {
  echo 
'Te has desconectado correctamente: '.$usuario.'';
  
login_form();
  }
  else
  {
  echo 
'Por alguna extraña razón no hemos podido desconectarte: '.$usuario.', inténtalo más tarde, mil disculpas.';
  }

}
else
// Si no, mostramos el formulario
{
echo 
'<p>Como es lógico, no podemos desconectarte si no te has conectado '.$usuario.' ;D</p>';
login_form();
}
?>
Creía que el problema podría ser en el login al establecer variables propias a partir de las de sesion, como por ejemplo la de $usuario, en este logout la volví a establecer pensando que podría ser el problema, pero esto no tiene que ver con la sesión en sí no?, además, ummmm, al asignarla a una variable global de sesión, al desaparecer esta también debería desaparecer la mía no?.
Es decir ggg, espero no liarlo mucho:
$usuario = $_SESSION[usuario];
si destruimos la sesion, la variable $usuario debería ... ¿estar vacía no?.

Bueno, una ayudilla please, como veis muy liado.

Ah, por cierto, uso un sistema de plantillas y es una aplicación modularizada, gg como no, y lo primero que cargo es el session_start() por eso no aparece ahí en el logout.php, aún si incluyera la función tampoco va eh.

Un saludo.
__________________
"La sabiduría comienza donde acaba el conocimiento". Yaris.
http://www.culturadigital.org

Última edición por Covids0020; 16/08/2004 a las 04:01