Foros del Web » Programando para Internet » PHP »

donde pongo ini_set?

Estas en el tema de donde pongo ini_set? en el foro de PHP en Foros del Web. Pregunta: Como manejo el SID de una session en la url? Repuesta: Para no tener que programar manualmente el PHPSESID en nuestros script y no ...
  #1 (permalink)  
Antiguo 21/02/2005, 05:54
 
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 12 años, 10 meses
Puntos: 0
donde pongo ini_set?

Pregunta: Como manejo el SID de una session en la url?

Repuesta:

Para no tener que programar manualmente el PHPSESID en nuestros script y no preocuparnos por que el cliente no acepte las cookies de nuesta session deberemos tener en nuestro php.ini las siguientes directivas activadas (1) o descativadas (0)

session.use_cookies=0
session.use_trans_sid=1

Si no es asi o no tenemos acceso al php.ini deberemos poner en todos nuestros script que usen sessiones lo siguiente:


Código PHP:
ini_set("session.use_cookies","0");//descativamos el uso de cookies para nuestras sessions
ini_set("session.use_trans_sid","1");//activamos el uso de la url para enviar el SID de nuestra session


Mis preguntas son:
1) si yo tengo un index.php que me incluye otros php con include('loquesea.php') tengo que poner el texto en todos mis php? o solo poniendolo en el index.php ya me lo heredan todos?

2)lo tengo que escribir dentro del session_start()? dentro del ob_start()?

3)el session_start tambien lo tengo que poner en todos los .php o solo en el index.php ya me lo heredan todos?...

Gracias por adelantado... es que no me salgo con lo de las sesiones...xD

Última edición por klareNs; 21/02/2005 a las 06:01
  #2 (permalink)  
Antiguo 21/02/2005, 06:16
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 14 años, 5 meses
Puntos: 3
1) los includes tienes que hacerlos en todos los .php en que quieras que funcione ese script. También puedes utilizar el comando require()

2) no entiendo bien qué quieres decir con escribir dentro del session_start() y del ob_start().

3) session_start() tienes que ponerlo en la primera línea de todos los .php que incluyan sessiones, si no lo pones el script interpretará que no usas sesiones y no las tendrá en cuenta.
  #3 (permalink)  
Antiguo 21/02/2005, 11:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
1) y 2) Si tu tienes una estructura "Modular" de tu web donde tienes un script que en función de parámetros llama a otros .. Si quieres "seguridad" tendrás que hacer el session_Start() (y si requieres de alguna otra configuración extra para ajuste de las mismas como esas directivas que ajustas con ini_set()) en todo script que llamas con tu include() ..

Pero, bajo una estructura modular de ese tipo donde se suele tener tu "HTML" en tu index donde defines <html> .. <head ...> etc .. eso te va a dar problemas con session_start() por conflicto de cabeceras .. así que si quieres usar ob_start() y en generar el control del buffer de salida de PHP .. bajo este esquema tu "ob_start()" y su ob_end_flush() tendrían que quedar en tu "inde.php" y los session_start() en cada script que llamas por el include().


3) Cuando trabajas con una estructura modular .. no se "hereda" en realidad .. lo que si que haces es "cortar y pegar" el código en el punto que lo llamas (bajo tu include() o require() y similares funciones). así que para cuando PHP lo ejecuta .. (una vez "pegado" dicho código) es una sóla entidad y se comporta como tal .. es decir . .si quieres probar que hacen un par de session_start() uno al principio y otro más abajo en el mismo flujo del script (código) eso es lo que te sucederá cuando uses "include()" y llames a otro script .. De hecho ese es el problema que se plantea cuando defines "HTML" en tu "index.php" y luego llamas a otros archivo por "include()" que inician el uso de sesiones con session_start() .. Pero, si no lo usas (y validas las varaibles de sesión que correspondan) en los scripts de tus "modulos" .. estaran "indefensos" ante accesos directos a dichos scripts.

Un saludo,
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 08:33.