Foros del Web » Programando para Internet » PHP »

Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Estas en el tema de Como hago para que mis usuarios se deslogueen cuando cierran mi pagina en el foro de PHP en Foros del Web. Hola, tengo un sitio de contactos y muchos de ellos salen de la pagina sin desloguearse, por lo tanto siguen apareciendo como en linea, el ...
  #1 (permalink)  
Antiguo 06/10/2010, 10:17
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Pregunta Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Hola, tengo un sitio de contactos y muchos de ellos salen de la pagina sin desloguearse, por lo tanto siguen apareciendo como en linea, el problema es para los demas usuarios que los ven en ese status ; ya que tengo la funcion de que si esta en linea puedes chatear con quien aparece "en linea", por lo tanto muchos usuarios que ya abandonaron la pagina no responden al chat , por que evidentemente ya salieron de la pagina, entonces viene la queja de los usuarios de que muchos "en linea" no responden .
Si alguien me puede orientar , sobre cual seria el problema y sobre todo como podria resolverlo, o si se les ocurre un herramienta sencilla de como hacer que los usuarios antes de cerrar la pagina opriman en "salir" o "log out"
O mejor, que despues de que cierren la pagina se desloguee automaticamente.
he intentado con esto:

<body onUnload="window.alert('Al salir recuerda desloguearte ,de lo contrario seguiras apareciendo como EN LINEA')">

pero el problema es que aparece incluso si cambian de secciones dentro de mi pagina , y eso es molesto para ellos.

Tambien he intentado con esto:
function control_close(e) {
if(!e) e = window.event;
e.cancelBubble = true;
e.returnValue = 'Los cambios realizados se perderán, si no los GUARDASTE'; //Este es el mensaje que mostraremos
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
window.onbeforeunload=control_close;

Pero tampoco me funciona.
Por lo tanto creo que se podria reslover desde la base de datos o algo asi, donde con un temporizador se desloguee despues de cierto tiempo , pero tambien hay usuarios que permanecen en la pagina por un periodo de 30 minutos y otros que solo entran 2 minutos y se van, por lo que para los que siguen en linea (realmente) los deslogueria en el tiempo marcado en el temporzador, y eso tambien es molesto.
Bueno ,realmente estoy en apuros y me super urge alguna sugerencia.
Gracias por sus aportes.
  #2 (permalink)  
Antiguo 06/10/2010, 10:23
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Como tal ninguna herramienta al final te va a funcionar al 100%, en algunos navegadores ni si quiera funcionara como debe, lo mejor es que manejes tiempos del lado del servidor, obteniendo la hora de su ultima acción (cambiar de página, o realizar cualquier acción dentro del sitio) y de hay contar el tiempo hasta su siguiente movimiento, si transcurre mas de no se, 5 minutos avisar a los demás usuarios que posiblemente el usuario ya no este en linea o que posiblemente no pueda contestar, recuerda que desde una página web es practicamente imposible saber automáticamente cuando un usuario abandona el sitio
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 06/10/2010, 10:44
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

prueba con esto y comentas que tal te fue
cierre de sesion al cerrar navegador
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #4 (permalink)  
Antiguo 06/10/2010, 12:19
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Esta muy bien el link, creo que serviria mucho, pero el problema es que no encuentro el archivo php.ini , bueno seguiré intentando.
  #5 (permalink)  
Antiguo 06/10/2010, 12:21
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

El problema es que el php.ini es meterse con la configuración del servidor, y dudo muchísimo que tu hosting permita cambies su configuración a menos que tu servidor sea un dedicado o vps
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 06/10/2010, 12:24
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Se me olvido comentar que el script tiene un panel de control donde tengo las opciones:
Number of sec after member will be logged out / este lo tengo en 600 segundos y
Hide last activity info after the number of days / este lo tengo en 7 dias , este ultimo lo he cambiado a varios valores , pero lo unico que pasa es que ,los que no han ingresado en 7 dias no aparece su ultima actividad, pero los online siguen apareciendo , incluso cuando no estan online.

Tambien tengo la opcion de ocultar la ultima actividad incluso "on line" , pero entonces que caso tendria la opcion de chat, simplemente se veria nulificada.
y muchos usuarios entran precisamente para chatear.
  #7 (permalink)  
Antiguo 06/10/2010, 13:21
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Encontre este archivo , no se si alguien pueda decirme si cambiando algo aqui, podria resolverse el problema o quiza le haya cambiado algo que me ocasionara el problema:



require_once dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'in ternals'.DIRECTORY_SEPARATOR.'Header.inc.php';

$document_key = SK_HttpRequest::getDocument()->document_key;


if ( SK_HttpUser::is_authenticated() ) {
app_Profile::deleteCookiesLogin(SK_HttpUser::usern ame());
}

SK_HttpUser::logoff();

if ( ($document_redirect = SK_Config::section('navigation')->Section('settings')->signout_document_redirect) != $document_key )
{
SK_HttpRequest::redirect( SK_Navigation::href($document_redirect));
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>You have been logged out</title>
<style>p{ font-family: Verdana; font-size: 11px }</style>
</head>

<body>
<p><?php
echo SK_Language::text('%msg.sign_out', array( 'site_index_url' => SK_Navigation::href( 'index' ) ) );
?></p>
</body>
</html>
  #8 (permalink)  
Antiguo 06/10/2010, 15:01
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Hola , debo decir gracias a todos ,pero sobre todo a _SSX que escribio en este post
http://www.forosdelweb.com/f18/cerrar-sesion-cerrar-pagina-498857/

Quiza diran algunos que una solucion rudimentaria ,ya que no se desloguea desde el servidor ni tocando el archivo php.ini , pero que me funciono y era lo que estaba buscando, y para los que esten buscando esta sencilla solucion fue

<body onUnload="location.href='URL DE LA FUNCION PHP DE DESLOGUEO'">

Tal vez no funcione para todos los exploradores (no lo he probado en todos )pero en IE funca bien .
Y lo mejor no hizo falta ningun window.alert de confirmacion que pusiera verde al usuario

Gracias a los que respondieron
  #9 (permalink)  
Antiguo 06/10/2010, 15:38
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Pense que ya lo tenia, pero no, funciona bien mientras no cambias de secciones en la misma pagina, de lo contrario te desloguea sin pedirlo, bueno seguire investigando, si tienen mas sugerencias son bienvenidas
  #10 (permalink)  
Antiguo 06/10/2010, 15:54
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

si no tienes acceso al php.ini, intenta con la opcion 2 el ini_set cambia la configuración al vuelo, ahora hay que checar a ver si tu servidor lo permite.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #11 (permalink)  
Antiguo 06/10/2010, 16:49
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Como hago para que mis usuarios se deslogueen cuando cierran mi pagina

Pero como se si mi servidor lo permite? no tengo idea de como hacer eso.
Lo que pasaba con
<body onUnload="location.href='URL DE LA FUNCION PHP DE DESLOGUEO'">
era que despues de cambiar de secciones en la misma pagina , aparte de que se deslogueba , ya no me permitia loguear ,me regresaba al index siempre, no habra una variante de este que no haga este problema, por que el objetivo lo cumplia ,que era que al cerrar la ventana era como si el usuario oprimiera el boton cerrar sesion,pero despues no le permitia loguearse.
O tal vez una combinacion de esta linea con una alerta donde solo si oprimieran aceptar se desloguea,
Bueno sigo recibiendo sugerencias, me esta volviendo loco helppppp.

Etiquetas: online
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:52.