Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/12/2004, 15:30
Avatar de yoseman
yoseman
 
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 5 meses
Puntos: 5
Se podría implementar en tu sistema de usuarios un funcioncilla para hacer logout, yo lo he usado alguna vez, lo que hago es destruir la sesión y redireccionar a dónde proceda, o la misma página o a otra:
Código PHP:

    session_destroy
();
    
Header("Location: http://".$SERVER_NAME.$SCRIPT_NAME); 
Pero el problema que tiene esto es que no se destruye la sesión en el caso de que el usuario cierre la ventana, y tampoco es fiable hacer algo con un pop-up usando OnUnload, ya que muchos navegadores modernos impiden que se abran pop-ups. Yo creo que el sistema de time-out es bastante eficaz para determinar estableciendo un pequeño margen de error en tiempo quién está conectado. Todo el mundo que se haya logueado se supone que está conectado de no ser que haya transcurrido ese margen de tiempo.
Respecto de agregar en la base de datos un campo booleano que contenga el estado de conexión del usuario, yo particularmente lo veo innecesario, si agregas un campo que se actualice con cada acceso del usuario en que simplemente metes la fecha en timestamp. Luego te creas una funcioncilla que simplemente dado un usuario devuelva se esta conectado o no y ya esta:
Código PHP:
funcion esta_conectado($usuario)
{
include (
"config.php");
$conectado=true;
$sesion_expira=300//ponemos 5 minutos para suponer a un usuario desconectado
$query=mysql_query("SELECT tiempo FROM usuarios WHERE 1");
$tiemp=mysql_fech_array($query);
if ((
time()-$tiemp["tiempo"])>$sesion_expira$conectado=false;
return 
$conectado;

Con esto te ahorras tener que actualizar un campo de más en la base de datos, y en mi opinión es lo mismo, porque es lo que tendrías que hacer para actualizar el campo.
Pero bueno, yo tampoco soy especialista en sesiones, ni mucho menos, lo mismo alguién con más experiencia sabe de otra solución .

salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 15/12/2004 a las 15:33