Foros del Web » Programando para Internet » PHP »

cerrar session al cerrar pestaña

Estas en el tema de cerrar session al cerrar pestaña en el foro de PHP en Foros del Web. buenas me gustaria saber como hacer que se cierre session al cerrar pestaña y si se puede hacer con php o con javascrip (aviso no ...
  #1 (permalink)  
Antiguo 02/07/2011, 12:24
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 9 años, 3 meses
Puntos: 2
cerrar session al cerrar pestaña

buenas me gustaria saber como hacer que se cierre session al cerrar pestaña y si se puede hacer con php o con javascrip (aviso no se mucho de php ni de javascript ya que no eh estudiado na de esto) xD

de antemano gracias^^
  #2 (permalink)  
Antiguo 02/07/2011, 13:28
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 9 años, 1 mes
Puntos: 331
Respuesta: cerrar session al cerrar pestaña

Existe el evento window.close(), con Ajax, has de capturar este evento y ejecutar un script php que cierre la session.
Te recomiendo un foro de Ajax o JS, salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 02/07/2011, 13:37
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 10 años
Puntos: 19
Respuesta: cerrar session al cerrar pestaña

Eso sería si fuera una ventaja JavaScript, creo...

Para cerrar sesión, un evento onUnload() en el body de la web.

Saludos
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #4 (permalink)  
Antiguo 03/07/2011, 07:56
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: cerrar session al cerrar pestaña

pero como es eso?

expon como seria xD
  #5 (permalink)  
Antiguo 03/07/2011, 08:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 5 meses
Puntos: 1517
Respuesta: cerrar session al cerrar pestaña

Para cerrar una sesion solo es cuestion de indicar en el php.ini en la linea que dice session.cookie_lifetime un valor de 0 y eso hace que la sesion dure mientras este abierto el navegador. http://php.net/manual/es/session.con...ookie-lifetime
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 03/07/2011, 08:48
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: cerrar session al cerrar pestaña

y que deberia poner para que lo aga? xD

y gracias^^
  #7 (permalink)  
Antiguo 03/07/2011, 08:52
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 8 meses
Puntos: 8
Respuesta: cerrar session al cerrar pestaña

me interesa este tema... yo quiero hacer que cuando cierre la ventana salte un script que le modificara en la base de datos el campo a desconectado, pero.. como seria? y tambien... y si no cierra la ventana sino que simplemente se va a otra pagina? :D
  #8 (permalink)  
Antiguo 03/07/2011, 08:55
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: cerrar session al cerrar pestaña

ea eso es lo que yo quiero xD

que cuando cierren la pestaña a los amigos les muestren que el usuario esta desconectado asiendo que borren de la base de datos un codigo que puse
  #9 (permalink)  
Antiguo 03/07/2011, 08:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 5 meses
Puntos: 1517
Respuesta: cerrar session al cerrar pestaña

@rompeguesos, GrupoC indicó que en el body se debe colocar un onunload y con una petición asincrónica lo logras. También recomiendo añadir el onbeforeunload para asegurarse de que todos los navegadores lo implemente.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 03/07/2011, 08:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 5 meses
Puntos: 1517
Respuesta: cerrar session al cerrar pestaña

@boisgontier, entonces te recomiendo esta lectura http://www.forosdelweb.com/2813329-post33.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 03/07/2011, 09:01
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: cerrar session al cerrar pestaña

esque mira este es mi codigo que tengo puesto para que te avise de que esta conectado y desconectado para que sepan si estas conectado pero yo quiero que cambie los datos de la base de datos al cerrar pestaña

codigo:

$urss=mysql_db_query($base, "select * from $tabla1 where id=$id")or die(mysql_error());
while($qry=mysql_fetch_array($urss))
{
$most = $qry[mos];
switch($most){
case "r":
$most = "Conectado/a";
break;
case "";
$most = "Desconectado/a";
break;
}
  #12 (permalink)  
Antiguo 03/07/2011, 10:26
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 9 años, 3 meses
Puntos: 202
Respuesta: cerrar session al cerrar pestaña

Lo que quieres ya se ha entendido, pero fíjate cuantas veces aparece escrita en las respuestas, o en lo enlaces que te dejan la palabra Ajax.
De nada te sirve el código que añades en php ya que este se ejecuta en el servidor.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #13 (permalink)  
Antiguo 03/07/2011, 11:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 10 años
Puntos: 19
Respuesta: cerrar session al cerrar pestaña

Lamento la tardanza:

Código HTML:
Ver original
  1. <head>...</head>
  2. <body onunload="javascript:funcionCalculo()">
  3. ...
  4. <script type="text/javascript">
  5. function funcionCalculo() {
  6.      aquí la llamada a la función que cierra sesión
  7. }
  8. </body>
  9. </html>

Saludos!
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #14 (permalink)  
Antiguo 03/07/2011, 11:48
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 9 años, 3 meses
Puntos: 202
Respuesta: cerrar session al cerrar pestaña

Cita:
Iniciado por GrupoC Ver Mensaje
Lamento la tardanza:

Código HTML:
Ver original
  1. <head>...</head>
  2. <body onunload="javascript:funcionCalculo()">
  3. ...
  4. <script type="text/javascript">
  5. function funcionCalculo() {
  6.      aquí la llamada a la función que cierra sesión
  7. }
  8. </body>
  9. </html>

Saludos!
Pero eso de usar el onunload ya se lo dijeron, además como ya señaló abimaelrc también debería usar onbeforeunload.
Aquí el tema es que quiere actualizar los datos en la base de datos usando PHP, por tanto de nada le sirve esa función si no hace una "llamadita asíncrona" porque como sabrás no se puede ejecutar el código de php dentro de una función en javascript.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #15 (permalink)  
Antiguo 03/07/2011, 12:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 10 años
Puntos: 19
Respuesta: cerrar session al cerrar pestaña

Lo del unload lo dije yo...

Abimaelrc ha complementado la respuesta muy correctamente, para hacer del evento multinavegador. No ha dicho que mi solución sea incorrecta.

Ya sé lo que se quiere hacer, y tienes la solución:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function funcionCalculo() {
  3.      //Llamada XMLHttpRequest de JavaScript (para evitar un pedazo de código, pongo la solución en JQUERY)
  4.     $.ajax({
  5.       url: "salir.php",
  6.       success: function(){
  7.         alert("TODO CORRECTO");
  8.       }  
  9.     });
  10. }

Archivo salir.php:

Código PHP:
Ver original
  1. <?php
  2. //Código para salir de la sesión
  3. ?>
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #16 (permalink)  
Antiguo 03/07/2011, 13:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 11 años
Puntos: 11
Respuesta: cerrar session al cerrar pestaña

GrupoC, aunque yo no hice la pregunta me sirvió mucho tu respuesta, ya que hace tiempo estaba tratando de hacer lo mismo pero no lo solucioné y ahora gracias a ti si... gracias por tu explicación... saludos.
  #17 (permalink)  
Antiguo 03/07/2011, 15:07
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 9 años, 3 meses
Puntos: 202
Respuesta: cerrar session al cerrar pestaña

Cita:
Iniciado por GrupoC Ver Mensaje
Lo del unload lo dije yo...

Abimaelrc ha complementado la respuesta muy correctamente, para hacer del evento multinavegador. No ha dicho que mi solución sea incorrecta.

¿Un mal día? ¿Por qué no me lees mejor?
Cita:
Iniciado por IEKK Ver Mensaje
Pero eso de usar el onunload ya se lo dijeron.
Además como ya señaló abimaelrc también debería usar onbeforeunload
Primero yo no dije que no fuera tuyo, dije que había que tener en cuenta lo que dijo el otro compañero y que iba a necesitar algo más como Ajax para actualizar con php. Siento que te hayas ofendido sin motivo (Al menos sonó a reproche).

Yo no me voy a enfadar por ver en tu código que has usado Jquery para el Ajax...
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #18 (permalink)  
Antiguo 03/07/2011, 16:27
 
Fecha de Ingreso: junio-2011
Mensajes: 25
Antigüedad: 8 años, 4 meses
Puntos: 8
Respuesta: cerrar session al cerrar pestaña

Pero no el problema de unbeforeunload es que lo ejecutara cada que cambie de pagina? aunque sea del mismo sitio?
  #19 (permalink)  
Antiguo 03/07/2011, 17:08
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 10 años
Puntos: 19
Respuesta: cerrar session al cerrar pestaña

Cita:
Iniciado por IEKK Ver Mensaje
¿Un mal día? ¿Por qué no me lees mejor?


Primero yo no dije que no fuera tuyo, dije que había que tener en cuenta lo que dijo el otro compañero y que iba a necesitar algo más como Ajax para actualizar con php. Siento que te hayas ofendido sin motivo (Al menos sonó a reproche).

Yo no me voy a enfadar por ver en tu código que has usado Jquery para el Ajax...
Perdona, efectivamente no leí bien . Lo lamento.
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #20 (permalink)  
Antiguo 03/07/2011, 19:19
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 690
Antigüedad: 10 años, 8 meses
Puntos: 8
Respuesta: cerrar session al cerrar pestaña

Cita:
Iniciado por GrupoC Ver Mensaje
Lo del unload lo dije yo...

Abimaelrc ha complementado la respuesta muy correctamente, para hacer del evento multinavegador. No ha dicho que mi solución sea incorrecta.

Ya sé lo que se quiere hacer, y tienes la solución:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function funcionCalculo() {
  3.      //Llamada XMLHttpRequest de JavaScript (para evitar un pedazo de código, pongo la solución en JQUERY)
  4.     $.ajax({
  5.       url: "salir.php",
  6.       success: function(){
  7.         alert("TODO CORRECTO");
  8.       }  
  9.     });
  10. }

Archivo salir.php:

Código PHP:
Ver original
  1. <?php
  2. //Código para salir de la sesión
  3. ?>
pero esto haria saltar la funcion al cambiar de pagina dentro de tu mismo sitio tambien? porque si es asi... seria un poco "jodido" :P
  #21 (permalink)  
Antiguo 04/07/2011, 08:59
 
Fecha de Ingreso: julio-2011
Mensajes: 22
Antigüedad: 8 años, 4 meses
Puntos: 2
Respuesta: cerrar session al cerrar pestaña

Lo que puedes hacer sería lo siguiente:

Editas el tiempo que una sesión permanece activa en el servidor, seguramente mediante el htaccess y:

php_value session.cookie_lifetime 0

Creo que era así. En principio por mucho que vaya a otra sección de la web, no se debería de cerrar la sesión, de todas formas si pones el valor 2 ya irías a lo seguro.

Luego, tu script para comprobar si están online, puedes hacer una función que introduzca en, por ejemplo, la tabla online, los datos de usuario, ip y fecha del último contacto. Cada vez que recargase la web o entrase en una sección diferente, esa fecha debería de actualizarse.

Por otro lado, otro script diferente que comprobase que si han pasado más de, digamos 2 minutos como hemos puesto en el lifetime, cambie el valor del online a desconectado en la tabla de los usuarios, y además que borre el la fila de sus datos de la tabla online.

Creo que me ha quedado un poco caótico, pero básicamente ahí tienes lo que necesitas sin tener que usar ajax o javascript.

Saludos.

Etiquetas: cerrar, pestaña, session
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 15:20.