Foros del Web » Programando para Internet » PHP »

Sesiones sin PHPSESSID

Estas en el tema de Sesiones sin PHPSESSID en el foro de PHP en Foros del Web. Hola, estoy investigando el tema de las sesiones y hay algo que no me cierra: Si hago un script en PHP que registre una variable, ...
  #1 (permalink)  
Antiguo 05/11/2008, 12:20
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Pregunta Sesiones sin PHPSESSID

Hola, estoy investigando el tema de las sesiones y hay algo que no me cierra:

Si hago un script en PHP que registre una variable, como en el siguiente ejemplo:

<?php
session_register(var1);
?>

<?php
$_SESSION[var1]++;
echo $_SESSION[var1];
?>

y actualizo la pagina varias veces, el valor de var1 se va incrementando y lo muestra en pantalla, pero si cierro y empiezo otra vez, el valor de var se reinicializa.

Mi duda es como sabe PHP que tiene que incrementar la variable de la sesion, si yo no le paso en ningun momento el SID que identifique dicha sesion?

Saludos.
  #2 (permalink)  
Antiguo 05/11/2008, 12:56
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Sesiones sin PHPSESSID

Cita:
pero si cierro y empiezo otra vez, el valor de var se reinicializa.
Las sesiones se pierden al cerrar el navegador
  #3 (permalink)  
Antiguo 05/11/2008, 13:14
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por david_M_G Ver Mensaje
Las sesiones se pierden al cerrar el navegador
No necesariamente.

Si los datos de la sesion se guardan en el lado del cliente o en el lado del servidor y desde el navegador se pasa el parametro PHPSESSID, se puede volver a la misma sesion despues de haber cerrado el navegador.
  #4 (permalink)  
Antiguo 05/11/2008, 13:22
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Sesiones sin PHPSESSID

Retomo tu duda johntse...

Mmmm pues depende de como tengas configurado tu php.ini tendrás esa reacción u otra(que a pesar de que cierres el navegador siga activa la sesión).

Cita:
Mi duda es como sabe PHP que tiene que incrementar la variable de la sesion, si yo no le paso en ningun momento el SID que identifique dicha sesion?
Lo que pasa es que php tiene dos maneras de progagar el SID de una sesión:
- por cookies(automáticamente)
- por url(manualmente debes propagar dicho SID)

Si no lo propagas por url y te funciona, quiere decir que estás usando cookies, de esa manera está configurado tu php.ini para tratar las sesiones.

Ahora bien, si cierras el navegador y se destruye la sesión, es por que tienes configurado tu php.ini para que "haga eso". Son llamadas "cookies de sesión", por que dura mientras que no cierres el navagador.

Espero te sirva,

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 05/11/2008, 13:45
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por johntse Ver Mensaje
No necesariamente.

Si los datos de la sesion se guardan en el lado del cliente o en el lado del servidor y desde el navegador se pasa el parametro PHPSESSID, se puede volver a la misma sesion despues de haber cerrado el navegador.
Claro, pero el título de tu post dice "Sesiones sin PHPSESSID". La otra opción son las cookies, pero ya no son sesiones. A eso me refiero.
  #6 (permalink)  
Antiguo 05/11/2008, 14:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por Carxl Ver Mensaje
Si no lo propagas por url y te funciona, quiere decir que estás usando cookies, de esa manera está configurado tu php.ini para tratar las sesiones.
Entiendo, pero el unico archivo que guarda mi navegador que podria llamarse cookie (por ser guardado en el lado del cliente), es un archivo cuyo nombre es "sess_" seguido del SID, y lo guarda en C:\Windows\Temp. Si tengo varios archivos de esos (que de hecho los tengo), como sabe el navegador cual usar?

O tal vez se guarda otra cookie que desconozco, pero por ahora no encontre nada mas que eso, ni en el directorio Cookies ni en Archivos temporales de internet.
  #7 (permalink)  
Antiguo 05/11/2008, 15:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Sesiones sin PHPSESSID

Esa es la cookie precisamente, si usas Firefox, con Firecookie (y Firebug) puedes ver las cookies atadas a un dominio, también recuerdo que IE tiene una herramienta en Opciones de Internet, en la cookie se guarda el host, entonces al entrar en tu pagina PHP, tu browser le envia la cookie actual y con esa rastrea las variables.

Saludos.
  #8 (permalink)  
Antiguo 05/11/2008, 15:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por GatorV Ver Mensaje
Esa es la cookie precisamente, si usas Firefox, con Firecookie (y Firebug) puedes ver las cookies atadas a un dominio, también recuerdo que IE tiene una herramienta en Opciones de Internet, en la cookie se guarda el host, entonces al entrar en tu pagina PHP, tu browser le envia la cookie actual y con esa rastrea las variables.

Saludos.
En la cookie sess_xxx no se guarda el host, solo las variables, su tipo y su contenido, por eso surge mi duda de como sabe el navegador que cookie enviar.
  #9 (permalink)  
Antiguo 05/11/2008, 16:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Sesiones sin PHPSESSID

Nunca dije que en la cookie, eso se guarda en una base de datos interna del navegador, por eso el incapie de que usaras las herramientas que te comento ya que ellas te dicen que cookie es de que dominio, expiración y path.

Saludos.
  #10 (permalink)  
Antiguo 05/11/2008, 16:42
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por Carxl Ver Mensaje
Ahora bien, si cierras el navegador y se destruye la sesión, es por que tienes configurado tu php.ini para que "haga eso". Son llamadas "cookies de sesión", por que dura mientras que no cierres el navagador.
Cita:
Iniciado por david_M_G Ver Mensaje
Las sesiones se pierden al cerrar el navegador
Si hablamos con propiedad, lo que se pierde es el id de sesión, mas los datos siguen guardados en el servidor (pues este no tiene forma de saber el momento exacto en el que el usuario salió de la página). Es lo que llamamos la "basura de las sesiones", y el servidor tiene integrado un sistema recolector de basura que limpia cada cierto tiempo el "almacen" de los datos de sesion, siguiendo un estandar de probabilidades definido en el php.ini y de acuerdo un tiempo de inactividad de las mismas (que creo es 24 horas)

Por eso, si existe la posibilidad de recuperar el id de sesión perdido al cerrar el navegador y antes de que los datos sean verdaderamente eliminados del servidor, entonces podremos recuperar los datos de esa sesión.

Cita:
Iniciado por david_M_G Ver Mensaje
La otra opción son las cookies, pero ya no son sesiones.
El hecho de que una sesión use cookies para almacenar el id de sesion en el cliente no significa que dejemos de llamarla sesión. Como dije, la cookie solo se usa para propagar el id, mas no los datos. Al final, una sesión s justamente eso, una visita de X usuario a nuestro sitio. Por lo tanto, los datos que se guarden como variables de sesion (en el servidor) sólo servirán mientras la visita de ese usuario continue.

Cita:
Iniciado por johntse Ver Mensaje
Si los datos de la sesion se guardan en el lado del cliente o en el lado del servidor y desde el navegador se pasa el parametro PHPSESSID, se puede volver a la misma sesion despues de haber cerrado el navegador.
Usando la función session_set_cookie_params() es posible cambiar el tiempo de vida de la cookie de sesión creada, que por defecto es 0 (se elimina al cerrar el navegador). Si se le asigan un valor futuro (time()+n) la cookie persistirá en las siguientes visitas, y los datos de sesión se mantendrán entre múltiples sesiones (siempre y cuando el recolector de basura no haya borrado los datos guardados en el servidor)

Saludos,
  #11 (permalink)  
Antiguo 05/11/2008, 23:28
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por okram Ver Mensaje
Si hablamos con propiedad, lo que se pierde es el id de sesión, mas los datos siguen guardados en el servidor
A que te referis con que "se pierde"?

Cita:
Iniciado por okram Ver Mensaje
Como dije, la cookie solo se usa para propagar el id, mas no los datos.
No creo que sea solo para eso, ya que adentro de la cookie estan tambien las variables y sus valores, y estas no siempre se guardan en el lado del servidor, o si?

Cita:
Iniciado por okram Ver Mensaje
Al final, una sesión s justamente eso, una visita de X usuario a nuestro sitio..
No es mejor definirla como un CONJUNTO DE SOLICITUDES relacionadas entre si?

Cita:
Iniciado por okram Ver Mensaje
Usando la función session_set_cookie_params() es posible cambiar el tiempo de vida de la cookie de sesión creada, que por defecto es 0 (se elimina al cerrar el navegador).
No se eliminaban despues de 24 horas?
  #12 (permalink)  
Antiguo 06/11/2008, 09:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por johntse Ver Mensaje
A que te referis con que "se pierde"?
Al borrarse la cookie pierdes el identificador que relaciona el archivo de sesión en el servidor con tu maquina, al no existir el servidor no te reconoce y crea una sesión nueva.

Cita:
Iniciado por johntse Ver Mensaje
No creo que sea solo para eso, ya que adentro de la cookie estan tambien las variables y sus valores, y estas no siempre se guardan en el lado del servidor, o si?
Las sesiones siempre SIEMPRE se guardan en el servidor en la carpeta temporal como sess_4g8nh6f1ap97e445sq6nm1cjljith50q, los números que ves es el identificador de sesión que se guarda en tu cookie, y ahí dentro se guardan serializados los valores de la sesión.

En tu cookie solamente se guarda el ID, es decir para este caso se guarda 4g8nh6f1ap97e445sq6nm1cjljith50q que es el identificador único de tu sesión.

Cita:
Iniciado por johntse Ver Mensaje
No es mejor definirla como un CONJUNTO DE SOLICITUDES relacionadas entre si?
No, es para rastrear una visita unica en el servidor, es una sesión literal.

Cita:
Iniciado por johntse Ver Mensaje
No se eliminaban despues de 24 horas?
Todo depende de los parámetros de tu cookie y los parámetros de la sesión en el servidor, revisa tu php.ini para que definas el tiempo de vida de la cookie y de la sesión.

Saludos.
  #13 (permalink)  
Antiguo 06/11/2008, 10:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por GatorV Ver Mensaje
Al borrarse la cookie pierdes el identificador que relaciona el archivo de sesión en el servidor con tu maquina, al no existir el servidor no te reconoce y crea una sesión nueva.
Esto lo entendi. Siempre se usan cookies junto con sesiones?

Cita:
Iniciado por GatorV Ver Mensaje
Las sesiones siempre SIEMPRE se guardan en el servidor en la carpeta temporal como sess_4g8nh6f1ap97e445sq6nm1cjljith50q, los números que ves es el identificador de sesión que se guarda en tu cookie, y ahí dentro se guardan serializados los valores de la sesión.

En tu cookie solamente se guarda el ID, es decir para este caso se guarda 4g8nh6f1ap97e445sq6nm1cjljith50q que es el identificador único de tu sesión.
Los archivos sess_xxx se guardan en c:/php/temp (por ejemplo) solo si especifico esa ruta en el parametro sessions.save_path del php.ini, sino se guardan en c:/windows/temp.

Yo creia que los de c:/windows/temp eran las cookies, pero ahora tengo la duda de si son los archivos de la sesion del servidor o las cookies de mi navegador, porque estos son exactamente iguales a los de c:/php/temp, y por lo que me decis, las cookies SOLO contienen el SID, pero por otro lado en los archivos temporales de internet no encuentro ningun archivo cuyo nombre sea el SID.
  #14 (permalink)  
Antiguo 06/11/2008, 10:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Sesiones sin PHPSESSID

Por eso te decia que mejor usaras las propias herramientas del explorador para ver las cookies, es más facil ya que estas se guardan en los archivos temporales del explorador bajo diferentes nombres, no siempre es el nombre tal cual. Por lo general las cookies se guardan como el nombre del dominio que la puso.

No siempre se usan cookies, si PHP no puede poner la cookie usando set_cookie(), entonces pasa el parámetro de la sesión por el URL, por eso ves paginas como mipagina.php?PHPSESSID=42424234423 ya que el Id de la sesión se pasa por el URL.

Saludos.
  #15 (permalink)  
Antiguo 06/11/2008, 10:48
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Pregunta Respuesta: Sesiones sin PHPSESSID

Cita:
Iniciado por GatorV Ver Mensaje
Por eso te decia que mejor usaras las propias herramientas del explorador para ver las cookies, es más facil ya que estas se guardan en los archivos temporales del explorador bajo diferentes nombres, no siempre es el nombre tal cual. Por lo general las cookies se guardan como el nombre del dominio que la puso.
De esto deduzco que los archivos de c:/windows/temp son una alternativa por defecto al parametro session.save_path. Es correcto?

Cita:
Iniciado por GatorV Ver Mensaje
No siempre se usan cookies, si PHP no puede poner la cookie usando set_cookie(), entonces pasa el parámetro de la sesión por el URL, por eso ves paginas como mipagina.php?PHPSESSID=42424234423 ya que el Id de la sesión se pasa por el URL.
Entendido ;).
  #16 (permalink)  
Antiguo 06/11/2008, 11:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Sesiones sin PHPSESSID

Así es, si tu no pones session.save_path por defecto se va al directorio "temporal" de tu sistema operativo.

Saludos.
  #17 (permalink)  
Antiguo 06/11/2008, 11:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Sesiones sin PHPSESSID

Estuve mirando el php.ini y los dos parametros para determinar la forma en que el cliente valida una sesion en el servidor son sassion.use_cookies y session.use_trans_id, se puede usar cualquiera de los, dependiendo del metodo que se quiera usar.

Por otro lado, baje el FireBug/FireCookie y pude ver todas las cookies del FireFox sin problemas, y pude comprobar que las cookies no tienen las variables definidas, sino solo el SID. Encima el nombre de la cookie es el mismo del parametro session.name, asi que me queda todo claro.

Me queda solamente una pregunta: por que usar sesiones es mas seguro que usar cookies?
  #18 (permalink)  
Antiguo 06/11/2008, 12:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Sesiones sin PHPSESSID

Por lo mismo que las sesiones estan en el servidor y no puedes cambiar el dato, en cambio la cookie esta en el cliente, y puedes modificar el valor facilmente.

Saludos.
  #19 (permalink)  
Antiguo 06/11/2008, 15:37
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Sesiones sin PHPSESSID

Entendido.

Tema terminado.
  #20 (permalink)  
Antiguo 07/11/2008, 07:38
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Sesiones sin PHPSESSID

Heeeeeeeeeeeeeee.... sí GatorV GRACIAS!!!!!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 18:31.