Foros del Web » Programando para Internet » PHP »

Session + Php5

Estas en el tema de Session + Php5 en el foro de PHP en Foros del Web. hola a todos, tengo un problema, que es que quiero pasar por la url el sid pero de varias sessiones que estoy creando pero no ...
  #1 (permalink)  
Antiguo 17/11/2005, 10:18
 
Fecha de Ingreso: enero-2003
Ubicación: Caracas
Mensajes: 439
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta Session + Php5

hola a todos, tengo un problema, que es que quiero pasar por la url el sid pero de varias sessiones que estoy creando pero no se como hacerlo esto es lo que llevo echo :

<? session_start();
$_SESSION["campo"] = $_POST["campo"];
$_SESSION["operador"]=$_POST["operador"];
$_SESSION["criteriou"]=$_POST["cu"];
$_SESSION["criteriod"]=$_POST["cd"];
header("Location:resultados.php?campo=".SID."");
?>

me enrroyo porque nose como pasar por la url el sid de cada una de las sesiones que cree. gracias.
  #2 (permalink)  
Antiguo 17/11/2005, 10:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tienes un error de concepto de "sesión" (de PHP) ..

La sesión es un "contenedor" de "variables" .. todas esas variables que ahí defines son pertenecientes a la misma y única sesión que trabajas.

De hecho es el array superglobale $_SESSION es "la sesión" (cara a tus scripts PHP) y se trabaja igual que cualquier otro array (arreglo, matriz .. ) común; la usamos por "conveniencia" como un array asociativo .. definiendo como indice el mismo nombre que tendría nuestra $variable común (no de sesión) para identificarla y ahí le asignamos valores (que pueden ser a su vez arrays también o cualquier otro tipo de variables incluido objetos ..) o leemos de ahí su valor.

El SID es el "Identificador único de sesión" y de por sí expresa:
nombre de sesión = ID de la sesión

Que es lo mismo que componerlo vía funciones:
Código PHP:
$mi_SID=session_name()."=".session_id(); 
Siempre es necesario "tomar" el nombre de la sesión que esté en curso .. pues si bien por defecto en el php.ini se asigna un valor (PHPSESSID si mal no recuerdo) .. este puede cambiar (tanto por modificación del php.ini como por definición expresa vía session_name() en un determinado script en tiempo d ejecución)

Para propagar el SID en el URL debes usarlo simplemente:
Código PHP:
header("Location:resultados.php?".SID); 
Por cierto SID es una "constante" .. así que no vá ni entre comillas .. ni tiene $ ... como una variable cualquiera.

Un saludo,
  #3 (permalink)  
Antiguo 17/11/2005, 12:24
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
para que puede interesar propagar por url el SID?
si mientras se esten usando las sesiones.. es accesible mediante session_id ¿?

es decir..... es se está mandando el id de la sesion.. a una pagina con la que ya no vas a tratar sesiones? bueno.. seguramente no sea nada de eso :p
  #4 (permalink)  
Antiguo 17/11/2005, 14:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
para que puede interesar propagar por url el SID?
Cuando no hay posibilidad de crear cookies en el cliente para propagar el SID por los motivos que sean, se puede propagar el SID en el URL pese que eso puede comprometer algo la seguridad de las aplicaciones en determinados casos.

Lectura recomendada (no va por tí cyborg .. pero si quieres hecharle un vistazo por si no lo conocías es interesante):
http://www.acros.si/papers/session_fixation.pdf

Cita:
si mientras se esten usando las sesiones.. es accesible mediante session_id ¿?
Justamente por qué el SID se está propagando correctamente (sea por el URL o en cookies) puedes usar session_name() + session_id() para obtener el valor de SID (y que si te fijas debe ser el mismo .. por eso cuando "NO" se propaga el SID correctamente, lo perdistes .. o te expiró la sesión se genera un nuevo SID.

Cita:
es decir..... es se está mandando el id de la sesion.. a una pagina con la que ya no vas a tratar sesiones? bueno.. seguramente no sea nada de eso :p
Bueno .. se supone que si andas propagando el SID a mano .. es por qué donde saltas vas a usar sesiones .. sino, como bien dices no tiene sentido seguir propagando el SID. .. No obstante cuando lo hace PHP automáticamente (session.use_trans_sid), el (PHP) no sabe si ahí termina tu aplicación o no .. según tu flujo .. así que igual lo propaga. Lo mismo sucede cuando usas propagación del SID en cookies.

Un saludo,
  #5 (permalink)  
Antiguo 17/11/2005, 16:35
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
creo que ese pdf lo habia visto en otro lado mas resumido.. y bueno algo entiendo...

aunque despues.. ya me he liado
si yo tengo una "aplicacion" web.. que sea.. no se.. un carrito.. cualquier cosa que requiera un login y sesiones...
yo no voy pasando explicitamente el SID entre paginas ...
cada vez que hago un session_start, pilla la sesion creada anteriormente no?
por eso decia.. que no entiendo lo de pasarlo por url, pudiendo consultarla en cualquier pagina mediante session_id()

saludos
  #6 (permalink)  
Antiguo 18/11/2005, 06:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
yo no voy pasando explicitamente el SID entre paginas ...
Si tu no lo haces explicitamente es que TU configuración de PHP lo está haciendo.

Ya sea en el URL re-escribiendo ciertos tag's HTML como links, formularios y algunos más:
session.use_trans_sid = ON

(PHP no inserta el SID automáticamente en redireccionamientos como header("Location: ...") ni en javascript (window.open() .. window.location ... etc)

O en cookies:
session.use_cookies = ON

Cita:
cada vez que hago un session_start, pilla la sesion creada anteriormente no?
Cuando tu usas session_start(), el sistema de sesiones "mira" si ese script recibe un SID valido propagado a el, ya sea mirando en el URL .. o en las cookies. Se revisa si el SID asociado a tu sesión sigue válido y si es así se continua usando y a su vez propagando según el modo que uses (a mano explicitamente, o automáticamente por los dos métodos mencionados). Si el SID no es válido (o la sesión asociada expiró) o no se recibe ningún SID propagado .. se crea uno nuevo (una sesión nueva).

Un saludo,
  #7 (permalink)  
Antiguo 18/11/2005, 06:56
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
aja veo que eso es... lo debe pasar por otros medios que no es la url... aunque nunca he probado a hacer un header.. a ver si seguida pillando el id al hacer un session_start
habra que probar.

saludos
  #8 (permalink)  
Antiguo 18/11/2005, 07:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mas que "siguida pillando el id" .. sería "el mismo ID" que en el script anterior.

Lo mejor es que veas -tu- configuración de PHP sobre sesiones (en un php.ini o haciendo un phpinfo() ..) y te asegures como realmente PHP va a propagar el SID.

Por ejemplo para no hacerte preguntas tipo "en mi casa me vá mi aplicación" pero en la de mi "compañero" no .. fallan las sesiones. En ese caso tal vez tu aceptes cookies y propagas el SID en cookies y en el otro caso NO acepta cookies ..

En fin .. trabajar con sesiones implica NO dar nada por supuesto; como esos mitos de: si la cookie no se puede crear por qué no las aceptan, para propagar el SID, PHP lo hará por el URL, por qué esto no es así en todos los casos ni sucede por "arte de mágia" sino por la configuración de PHP al respecto y -como- se redireccionan entre los scripts (páginas) ..

Un saludo,
  #9 (permalink)  
Antiguo 18/11/2005, 13:35
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
pues a ver si cuando este delante del ordenador que tiene easyphp.. miro la configuracion y digo..
pero si... yo he dado demasiadas cosas por supuesto :p

saludos
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:17.