Foros del Web » Programando para Internet » PHP »

Consulta borrar datos de sesion

Estas en el tema de Consulta borrar datos de sesion en el foro de PHP en Foros del Web. Hola. Estoy haciendo un programa en el cual el usuario se loguea y en base a sus permisos puede acceder o no a ciertas opcion. ...
  #1 (permalink)  
Antiguo 14/09/2010, 08:07
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Consulta borrar datos de sesion

Hola.
Estoy haciendo un programa en el cual el usuario se loguea y en base a sus permisos puede acceder o no a ciertas opcion. El problema es que cuando se cierra la ventana (o pestaña) los datos de la sesion siguen activos ent. cualquiera puede acceder a las opciones de la sesion anterior.

Lo que quiero es que cuando se cierre la venta (o pestaña) se borren todas las variables de sesion.

¿Como puedo hacer?

ACLARACION: no quiero un hacer un vinculo (Cerrar Sesion) que te dirija a un .php que te borre la sesion, eso ya lo tengo.

Slds.
  #2 (permalink)  
Antiguo 14/09/2010, 08:16
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Consulta borrar datos de sesion

revisa esto
http://www.forosdelweb.com/569431-post2.html
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 14/09/2010, 08:32
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Consulta borrar datos de sesion

No me sirvió porque yo necesitarÍa que antes de cerrar la pestaña se ejecute el borrado de la sesion y no antes (de todas formas me guardo esta informacion), pero gracias de todas formas.
  #4 (permalink)  
Antiguo 14/09/2010, 08:37
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Consulta borrar datos de sesion

Cita:
No me sirvió porque yo necesitarÍa que antes de cerrar la pestaña se ejecute el borrado de la sesion y no antes (de todas formas me guardo esta informacion), pero gracias de todas formas.
no me quedo claro entonces con lo que te pase puedes configurar q al abandonar la pagina se borren las variables de session
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 14/09/2010, 08:40
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Consulta borrar datos de sesion

no me sirvió.
  #6 (permalink)  
Antiguo 14/09/2010, 09:13
Avatar de vertigo112  
Fecha de Ingreso: agosto-2006
Ubicación: Estado de Mexico
Mensajes: 25
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Consulta borrar datos de sesion

me he topado en un par de ocaciones con este problema, cuando trabajo con SESSIONES en php, se me queda colgada la Session anterior aaaaa pero esto solo pasa Localmente en el mismo PC de pruebas pense que esto sucedia de igual forma montando la aplicacion en la Web pero no es asi ya que lo he probado y eso jamas podria pasar por que cada acceso al PHP_SID es diferente desde cada IP se crea una session diferente,,,,

pero al grando podria pasar que de 1 entre 1000 casos un usuario accede a nuestra aplica, desde un CAFE Internet, y sale de la pagina sin tener que cerrar sesion y el siguiente usuaro accede a nuestra web desde esa misma maquina y se ha quedado colgada la session.. pues ahi se dara el caso...

para solucionar eso lo primero que hacia es detectar en javascript cuando un navegador se ha cerrado, llamo al evento que se ejecuta cuando se cierra la ventana y le cuelgo un AJAX una vez dentro elimino la session todo lo hace cuando el usuario cierra la ventana.

esa opcion no es muy optima ya que no me funcionaba bajo algunas versiones de navegador haci que podria no ser una opcion 100% ..

ahora lo que te comentaron anteriormente es la opcion 100% funcional PHP tiene todo o casi todo resulto para el mismo caso que te comento funciona de forma transparente es cuestion de echar un cambio al php.ini y listo ya que hay unas funciones que tiene como regla que cuando una session exista creada mediante
session_start() esta pueda ser propagado solo y esclusivamente por el PATH ruta o en este caso el dominio en el que te encuentres esto quiere decir que si en dado caso te vas desde la pagina a otro URL, o cierras el navegador o cierras la pestaña la session se pierde esto claro esta desactivo la mayoria de sitios no les sirve que si un usuario salido de su sitio tenga que volver a loguearse:

session.use_only_cookies = 1

esta variable por defecto esta comentada hay que descoemntar OJO no confundir con otra que se llama session.use_cookies = 1 ya que no son iguales,,

y la otra a revizar que no es la importante pero si necesaria por algunas versiones es esta

session.use_trans_sid = 0

si tienes PHP 5 no hay problema ya esta descomentada incluso en las ultimas version del 4.x.x



ahora este seria el caso de que puedas tener acceso al php.ini pero que pasa si no puedes acceder a el pues hay una solucion seria desde el propio script de PHP

Código PHP:
ini_set()
ini_set("session.use_trans_sid","0");
ini_set("session.use_only_cookies","1");

session_set_cookie_params(0"/"$HTTP_SERVER_VARS["HTTP_HOST"],  0); 

ahora aqui algo importante es que esto se puede hacer solo y esclusivamente si el Servidor me lo permite ya que lo he provado en unos servidores y me funciona bien pero hay uno por ahi que no me funcionaba y se debia por la configuracion que tenia y que ese provedor lo tenia en IIS pero solo fue cuestion de pedirles esa modificaion y me lo resolvieron,,

Última edición por GatorV; 15/09/2010 a las 10:22
  #7 (permalink)  
Antiguo 14/09/2010, 12:27
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Consulta borrar datos de sesion

Espectacular la explicacion , lo unico te hago una pregunta mas.
Estuve mirando en la documenacion de php y la funcion tiene 5 parametros

session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )

lifetime: Tiempo de vida de la cookie de sesión, definido en segundos.

path: Ruta en el dominio donde la cookie trabajará. Use una barras simple ('/') para todas las rutas en el dominio.

domain: Dominio de la cookie, por ejemplo 'www.php.net'. Para hacer las cookies visibles en todos los sub-dominios, el dominio debe ser prefijado con un punto, como '.php.net'.

secure: Si es TRUE la cookie sólo será enviada sobre conexiones seguras.

httponly: Marca la cookie como accesible sólo a través del protocolo HTTP. Esto siginifica que la cookie no será accesible por lenguajes de script, tales como JavaScript. Este ajuste puede ayudar de manera efectiva a reducir robos de indentidad a través de ataques (aunque no está soportado por todos los navegadores).

session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);

Por lo tanto $secure y $httponly ¿no tendrian que ser 1 (true)?
Recalco que es una consulta y no una afirmacion, solo quiero entender como funciona esta funcion.
De todas formas hoy lo pruebo y mañana te aviso como me fue.

Gracias.
  #8 (permalink)  
Antiguo 15/09/2010, 11:02
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Consulta borrar datos de sesion

Use lo que me pasaste. Si cierro el navegador se borran los datos de sesion pero si solo cierro la pestaña, la session no se borra (abro los archivos en otra pestaña y las variables de sesion siguen activas). Lo probé en un pequeño programita.

Te paso el codigo (a ver si me podes decir el error).


pruebasesion.php

Código:
<?php
ini_set("session.use_trans_sid","0"); 
ini_set("session.use_only_cookies","1"); 
session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"],  0);  

session_start();
?>

<ul>
<li><a href="pruebasesion_rdo.php?id=1">cargar datos</a></li> 
<li><a href="pruebasesion_rdo.php?id=2">Mostrar datos</a></li> 
<li><a href="pruebasesion_rdo.php?id=3">destruir datos</a></li> 
</ul>

pruebasesion_rdo.php
Código:
<?php
ini_set("session.use_trans_sid","0"); 
ini_set("session.use_only_cookies","1"); 
session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"],  0);  

session_start();

if ($_GET['id']==1){
	$_SESSION['prueba']= TRUE;	
	echo ("id=1; el valor de la var de sesion es: " .$_SESSION['prueba'] . "<BR>");
}

if ($_GET['id']==2){
	if (isset($_SESSION['prueba'])){
		echo ("id=2;  el valor de la var de sesion es: " . $_SESSION['prueba'] . "<BR>");
	}else{
		echo ("la var no esta definida");
	}
}

if ($_GET['id']==3){
	session_unset();	
}

?>

<a href="pruebasesion.php">volver</a>
  #9 (permalink)  
Antiguo 15/09/2010, 13:53
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta borrar datos de sesion

si no entendi mal, lo que necesitas es que cualquier persona que no sea usuario logueado no pueda acceder a la pagina
podes probar lo siguiente:

if (!$_SESSION['usuario'])
{
header ("Location: error_loguin.php");
exit;
}
con eso lo que se logra es que si no estas logueado y queres acceder a la pagina te redireccione a una pagina de error
espero te sirva, saludos
ariel
  #10 (permalink)  
Antiguo 15/09/2010, 15:50
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Consulta borrar datos de sesion

Entendiste mal.

Lo que quiero es que al cerrarse la pestaña del navegador se borren todos los datos de la sesion.
El codigo que vos me mandas es igual al que deje yo (pruebasesion.php; pruebasesion_rta.php), si los probas vas a ver que aunque cierres la pestaña del navegador los datos de la sesion siguen activos.

$_SESSION['usuario'] sigue teniendo el valor de la ultima sesion iniciada, aun cuando se ciera la sesion.

Slds.
  #11 (permalink)  
Antiguo 15/09/2010, 21:33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Consulta borrar datos de sesion

podrias probar haciendo:
session_unregister("usuario"); //nombre de la variable de sesion
session_destroy();



Cita:
Iniciado por Lechu_ Ver Mensaje
Entendiste mal.

Lo que quiero es que al cerrarse la pestaña del navegador se borren todos los datos de la sesion.
El codigo que vos me mandas es igual al que deje yo (pruebasesion.php; pruebasesion_rta.php), si los probas vas a ver que aunque cierres la pestaña del navegador los datos de la sesion siguen activos.

$_SESSION['usuario'] sigue teniendo el valor de la ultima sesion iniciada, aun cuando se ciera la sesion.

Slds.
  #12 (permalink)  
Antiguo 16/09/2010, 06:16
 
Fecha de Ingreso: enero-2010
Mensajes: 128
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Consulta borrar datos de sesion

¿Pero donde pongo eso?
El navegador se cierra y listo no hay forma de ejecutar eso antes de que se cierre.

Podria usar un evento de javascript, pero en los mensajes anteriores dice que no funciona siempre.

Si se te ocurre como hacerlo, poneme unas lineas de código para guiarme donde colocarlas.

Estas dos sentencias:

session_unregister("usuario"); //nombre de la variable de sesion
session_destroy();

se usan en el archivo "DestruirSesion.php". Pero algun evento u otro archivo php debe llamarlo.
Por ultimo te recomiendo usar:

session_unregister();

dado que de esta forma te borra todas las variables de sesion.

Slds.

Etiquetas: borrar
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 22:34.