Foros del Web » Programando para Internet » PHP »

destruir sesión

Estas en el tema de destruir sesión en el foro de PHP en Foros del Web. Tengo implantado en un programilla que he hecho un sistema de autenticación a través de sesiones y funciona bien excepto por una cosa: En Mozilla ...
  #1 (permalink)  
Antiguo 23/03/2005, 00:20
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
destruir sesión

Tengo implantado en un programilla que he hecho un sistema de autenticación a través de sesiones y funciona bien excepto por una cosa: En Mozilla y Firefox, cuando un usuario cierra el navegador sin antes hacer logout (es decir, casi siempre ) la sesión no desaparece, de forma que luego cualquiera puede volver a entrar con esa misma máquina sin problemas. La pregunta es ¿de qué forma puedo conseguir que la sesión siempre se extinga cuando el usuario cierra el navegador, independientemente del navegador que se esté usando?
  #2 (permalink)  
Antiguo 23/03/2005, 01:29
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... ... De nuevo.. PHP es lenguaje del lado del servidor... Como estas buscando una funcion "al cerrar la ventana" dependeria de JavaScript...

Lo que se me ocurre es manejar cookies... y con la función uload (de JS) borrar esa cookie... pero es lo que debes estar haciendo ¿no?... Pregunta en el foro de JS sobre el error en tu código.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 23/03/2005, 01:32
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
OK, muchas gracias, preguntaré por allí a ver qué se les ocurre.
  #4 (permalink)  
Antiguo 23/03/2005, 01:45
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
!!!! Otro dato... y que sí corresponde a este foro: Puedes definir la duración de una sesión... No se destruirá exactamente al cerrar tu ventana pero quizá te sirva ... pero ahí sí busca en el foro... ignoro el tema.

Pregunta: Si tienes algo ya hecho cierto???.. como mencionas de un error solo con Mozilla-FireFox supongo logras hacerlo con IExplorer...

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 23/03/2005, 02:05
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
Pues curiosamente con IExplorer la sesión se autodestruye cada vez que sales del navegador, y no hay que hacer nada extra para conseguirlo. voy a mirar también lo de la duración de la sesión. Llevas razón que puede ser una solución no perfecta, pero válida.
  #6 (permalink)  
Antiguo 23/03/2005, 02:11
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
No sabia que hacia eso el Iexplorer... pero si esto no dependeria del explorador.... debe de ser por el metodo de propagación. Ya vendrá un experto a explicarnos.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 23/03/2005 a las 02:18
  #7 (permalink)  
Antiguo 24/03/2005, 01:14
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
Tema solucionado Lo conseguí a través de la siguiente orden:

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

También hay que tener en cuenta que Mozilla no se cierra por completo por el simple hecho de cerrar el navegador. Es decir, que si tienes abierto el Mozilla Mail o el Inicio Rápido de Mozilla aunque cierres el navegador la sesión no se destruye.
  #8 (permalink)  
Antiguo 24/03/2005, 01:22
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... Gracias por contribuir al foro no olvidandote de mensionar la solución... ¿dónde lo hayaste?... digo!, para entenderlo..

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 24/03/2005, 01:25
Avatar de zvnko  
Fecha de Ingreso: abril-2004
Ubicación: coatzacoalcos
Mensajes: 42
Antigüedad: 20 años
Puntos: 1
y esto donde lo pongo?

Tengo el mismo problema, cuando mis usuarios cierran el navegador la sesion no se destruye sigue ahi! y eso es problemtico!!

Seguyn vi hay una instruccion:
session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);


pero eso donde lo coloco o que onda ?
o que otra solucion pouede haber? segun vi
tambien se modifica en el php.ini pero eso donde esta? no entiendo :S
  #10 (permalink)  
Antiguo 24/03/2005, 01:37
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
Cita:
Iniciado por jam1138
... Gracias por contribuir al foro no olvidandote de mensionar la solución... ¿dónde lo hayaste?... digo!, para entenderlo..

Suerte!
Tú mismo me diste la pista diciendo que sería controlando la duración de la sesión, así que investigando un poco encontré esto:

http://es2.php.net/manual/es/functio...kie-params.php

El 0 son los segundos que dura la sesión, y el $HTTP_SERVER_VARS["HTTP_HOST"] lo que hace es poner el nombre del dominio donde se aplica la cookie.

en cuanto a la pregunta de que dónde va esa línea, yo la pongo justo por debajo de la línea en la que empiezas la sesión:

Este es el principio de mis archivos:

<?
session_cache_limiter('nocache,private');
session_start();
session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);
  #11 (permalink)  
Antiguo 24/03/2005, 01:42
Avatar de zvnko  
Fecha de Ingreso: abril-2004
Ubicación: coatzacoalcos
Mensajes: 42
Antigüedad: 20 años
Puntos: 1
sigo sin entender

sigo sin entender, uso phpnuke y aun tengo la duda de donde colocarlo :s
  #12 (permalink)  
Antiguo 27/04/2005, 10:27
 
Fecha de Ingreso: septiembre-2004
Mensajes: 6
Antigüedad: 19 años, 7 meses
Puntos: 0
Una pregunta ¿Y que pasa con esta instrucción cuando el usuario navega de una página a la otra de nuestro sitio? ¿Las sesiones iniciadas siguen o desaparecen?
  #13 (permalink)  
Antiguo 27/04/2005, 12:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por zvnko
sigo sin entender, uso phpnuke y aun tengo la duda de donde colocarlo :s
En tu caso .. tendrás que "estudiar" como funcionan los scripts de esa aplicación .. donde gestiona la sesión .. donde la usa ..o ver si tiene esa opción en tu panel de administración de dicha aplicación.

Por ejemplo "yo" por mucho que sepa de PHP .. realmente no tengo ni idea de como funciona PHP-Nuke en cuanto a esa gestión de sus sesiones. Puedes consultar en el foro de "Aplicaciones pre-fabricadas" .. O si tienes acceso a tu php.ini .. modifica la directiva:

session.cookie_lifetime

lo dejas en 0 y reinicias tu servidor .. Esa configuración así afectará a todo script PHP que se ejecute en ese servidor .. no sólo a tu "PHP-Nuke".

Un saludo,
  #14 (permalink)  
Antiguo 27/04/2005, 12:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por pachu2004
Una pregunta ¿Y que pasa con esta instrucción cuando el usuario navega de una página a la otra de nuestro sitio? ¿Las sesiones iniciadas siguen o desaparecen?
Pues no pasa nada .. tu sesión sigue activa hasta que "mate" la última ventana de tu aplicación .. El SID se propaga en la cookie .. la cookie tiene duración 0 pero es de tipo "sesión" . .es decir .. si pasas a otro script de tu sitio seguidamente esta sigue "viva" hasta eso mismo .. hasta que cierres la última ventana de tu sitio.

También habría que asegurarse que este comportamiento sea así usando y forzando el uso de la propagación del SID en cookies exclusivamente usando (php.ini o ini_set() ):

session.use_only_cookies = 1

Y desactivando: session.use_trans_sid = 0

Un saludo,
  #15 (permalink)  
Antiguo 27/04/2005, 12:40
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
No resulta

Bueno, pues yo tengo el mismo problema y probé a ponerle la línea con la que tognaco resolvió su problema, pero no me funciona la solución. Ya probé poniendolo después del session_start y nada, siempre que abro un nuevo navegador en Firefox, el sistema es accesible.

Será porque estoy haciendo mis pruebas desde un localhost en una PC o que será?

Saludos!
  #16 (permalink)  
Antiguo 27/04/2005, 15:17
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 21 años, 3 meses
Puntos: 4
Cita:
Iniciado por Cluster
También habría que asegurarse que este comportamiento sea así usando y forzando el uso de la propagación del SID en cookies exclusivamente usando (php.ini o ini_set() ):

session.use_only_cookies = 1

Y desactivando: session.use_trans_sid = 0
Yo por ejemplo no tengo aacceso al php.ini ¿Donde puedo conseguir información para trabajar con ini_set() con lo que propones, Cluster?
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #17 (permalink)  
Antiguo 27/04/2005, 15:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Hazlo por configuración de PHP y ajusta la propagación del SID en cookies exclusivamente (como detallo en mi mensaje anterior) .. Pruebalo y nos comentas (asegurate que todo cambio que hagas se refleje en tu phpinfo() ..)

Un saludo,
  #18 (permalink)  
Antiguo 27/04/2005, 15:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por TurKa
Yo por ejemplo no tengo aacceso al php.ini ¿Donde puedo conseguir información para trabajar con ini_set() con lo que propones, Cluster?
En ..
www.php.net/ini_set

Pero si no tienes acceso a tu php.ini .. suponemos que usas un servicio de hosting? .. si es así .. verifica que tengas permitido también el uso de ini_set() en muchas ocasiones tampoco podrás ejecutarlo (ya veras un error referente a esa misma limitación).

Un saludo,
  #19 (permalink)  
Antiguo 27/04/2005, 15:35
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 21 años, 3 meses
Puntos: 4
Cita:
Iniciado por Cluster
En ..
www.php.net/ini_set

Pero si no tienes acceso a tu php.ini .. suponemos que usas un servicio de hosting? .. si es así .. verifica que tengas permitido también el uso de ini_set() en muchas ocasiones tampoco podrás ejecutarlo (ya veras un error referente a esa misma limitación).
Pos no te has equivocado en nada! Ya vi el error

Por las dudas, pregunto para ver si no lo estoy utilizando bien.-
(la información la obtuve en http://ar2.php.net/ini_set)

Yo puse esto:
<?
ini_set(session.use_only_cookies,1);
ini_set(session.use_trans_sid,0);
?>

¿Se escribe así o hice una burrada? Es decir, yo vi esto:
string ini_set ( string nombre_var, string nuevo_valor )
y lo reemplacé tal cual, por esto:
ini_set(session.use_only_cookies,1)

Me pregunto si debería haberlo hecho de otra forma
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #20 (permalink)  
Antiguo 27/04/2005, 15:40
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 21 años, 3 meses
Puntos: 4
Ni me respondas Cluster. En mi servidor funciona perfecta. Donde no funciona es en el servidor de mi cliente

Pos... tendré que hacer magia entonces?
Mil gracias por la ayuda!
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #21 (permalink)  
Antiguo 28/04/2005, 07:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Los valores de ini_set() son "strings" .. así que deben tener comillas:

Cita:
ini_set
(PHP 4 , PHP 5)

ini_set -- Establece el valor de una opción de configuración
Descripción
string ini_set ( string nombre_var, string nuevo_valor )
Código PHP:
<?
ini_set
("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
?>
Un saludo,
  #22 (permalink)  
Antiguo 28/04/2005, 08:35
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
Pues así está, y sin embargo, deja entrar!

Cita:
Iniciado por Cluster
Hazlo por configuración de PHP y ajusta la propagación del SID en cookies exclusivamente (como detallo en mi mensaje anterior) .. Pruebalo y nos comentas (asegurate que todo cambio que hagas se refleje en tu phpinfo() ..)

Un saludo,

Estas son las líneas de mi php.ini que me parece tienen que ver con el tema.

; Whether to use cookies.
session.use_cookies = 1

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
session.use_trans_sid = 0

Así lo tengo y sin embargo al regresar con Firefox se puede entrar sin problemas..

Porque???
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 1 personas




La zona horaria es GMT -6. Ahora son las 02:59.