Foros del Web » Programando para Internet » PHP »

Sesiones y use_trans_sid

Estas en el tema de Sesiones y use_trans_sid en el foro de PHP en Foros del Web. Estoy tratando de propagar el SID por URL pero no se como hacerlo. Este es el código donde creo la sessión e inicializo al variable ...
  #1 (permalink)  
Antiguo 21/05/2004, 08:03
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Sesiones y use_trans_sid

Estoy tratando de propagar el SID por URL pero no se como hacerlo. Este es el código donde creo la sessión e inicializo al variable session.use_trans_sid:
Código PHP:
   session_start();
   
ini_set("session.use_trans_sid","1");
   
$_SESSION['nombreusuario'] = "anonimo"
pero no se como poner un vinculo y que me salga de esta forma:
Cita:
sitios.php?accion=mostrar&categoria=todas&usuario= anonimo&PHPSESSID=e613099d08ab7f30b1a9060758c7c558
Me dan una mano?

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 21/05/2004, 15:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Todas las configuraciones "forzadas" con ini_set() se deben definir ANTES de cualquier uso de lo que estés "forzando" . .En tu caso sesiones, tendrás que usar el ini_set() antes de tu session_start() o cualquier otra función o acceso a una sesión.

Luego ..
session.use_trans_sid = 1 .. se supone que PHP va a reescribir tus tag´s HTML de links, formularios .. etc para insertar el SID en ellos. Pero esto depende de si usas: session.use_cookies = 1 . si lo usas a 1 estás propagando el SID en cookies .. así que deberías dejar (o forzar) también esa directiva para que quede a 0 (OFF) y propagar el SID enteramente por el URL y de forma automática por parte de PHP.

Hay casos que PHP no sobreescribe para añadir el SID .. por ejemplo en un:

header("Location: pagina.tal")

tampoco lo hace si usas javascript (window.open .. window.location .. etc)

ni en refrescos automáticos con <meta de refresh ..>

En esos casos debes propagar el SID de forma manual

El SID es una constante de PHP .. así que puedes acceder a ella por su nombre: SID . El SID se compone del nombre de la sesión y del ID de la sesión en curso .. así que también podrías componerlo vía:

Código PHP:
header("Location: nose.php?".session_name().'='.session_id()); 
Útil este método (de obtener por separado el nombre de la sesión del ID de la sesión) cuando deseas propagar el SID en un campo hidden de un formulario donde harías:

Código PHP:
<input type="hidden" name="<? echo session_name() ?>" value="<? echo session_id() ?>">
Pero también podrías hacerlo por "GET" montando el SID en el action (pagina que apunta) tu formulario:

Código PHP:
<form name="bla" action="nose.php?"<? echo SID ?> method="POST">
(si, .. si a nose.php usas el formulario en method POST .. los datos se enviarán por ese metodo y lo que "montes" en el URL de la llamada al script de proceso: nose.php (action de ese caso) llegaran por GET a dicho script (y los veras por el URL mientras que los del própio formulario como van en POST no los veras dando vueltas por el URL).

Si te finas .. en este último ejemplo usé SID como constante .. Como toda constante de PHP .. su llamada es "SIN" comillas .. sino sería interpretada como una cadena (string) .

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 21/05/2004 a las 15:16
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 18:30.