Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/10/2006, 21:55
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Estoy con lo de las sesiones y según todos los artículos que he leido, explican que la función session_start() almacena los datos de la variable de sesión en el sevidor, de manera que no se crean cookies ya que existe la posibilidad que el usuario o visitante tenga el navegador con los cookies bloquedos y esto no garantiza 100% el manejo de sesiones.
Aquí .. estás un poco confundido. Realmente "session_start()" no es más que una función más del uso de "Sesiones" en PHP (www.php.net/session).

Es cierto que es necesario usar session_start() para "iniciar o continuar" con una sesión activa. Pero no tiene nada que ver con "cookies" en sí. Dicha función lo que hace es "ver" por donde le llega un "SID" (se explica más abajo este concepto) .. checkear que sea válido y si es así .. continua con la sesión en curso, si no hay "SID" propagado (caso de inicio por primera vez del sistema) o bien el SID expiró .. ahí se crea otra sesión nueva.

Las "sesiones" de PHP manejan el concepto del "SID: Identificador único de sesión", gracias a ese "dato" .. las sesiones hacen su labor.

No sé si conoces que las sesiones almacenan sus datos en el -servidor- a diferencia de las cookies lo hace en el -cliente- (en el PC .. en el navegador que las creó).

El "SID" es el "código" o referencia que nos vincula y asocia los datos de nuestra sesión (archivo físico creado en el servidor y que contiene nuestras variables de sesión) con el "cliente" que las creó .. Por eso el "SID" es un dato tipo: 897asd89f789afd89 .. único, aleatório ...

El "SID" se -debe- propagar entre cliente-servidor a cada "pedición" que haces al servidor de una página/script PHP .. es decir .. cuando tu llamas a tu script por el URl en un link, por un formulario que usas .. redireccionamientos vários (PHP cabeceras/javascript .. etc).

A su vez .. el "SID" lo podemos propagar de dos formas:
1) Cookies
2) URL (Re-escribiendo ciertos tag´s de HTML para que PHP incrustre ese dato en esos links, formularios .. etc)

PHP.net recomienda propagar el SID en cookies por seguridad.

El dato que se propaga en la cookie que se genera es -sólo- ese SID .. NADA de los datos que tienes en la sesión, esos .. siguen estando en el servidor y en NINGÚN momento pasan al cliente por esa cookie o por el URL.

Ahora .. si tu quieres propagar el SID en el URL completamente para no depender de que el navegador de turno de tu usuario acepte o no cookies en general .. OK, propagarlo así, pero antes leete este documento que recomienda PHP.net:

http://www.acros.si/papers/session_fixation.pdf

Como ya sabes que PHP puede propagar -por tí- el SID de dos formas ..es cosa de ver tu configuraciónd e PHP (php.ini) o forzarla (ini_set() .. etc) para que así se propague el SID como tu necesites o estimes oporturno

Propagación del SID en cookies sólo:
session.use_trans_sid = 0
session.use_cookies = 1
session.use_only_cookies = 1
url_rewrite_tags = ''

Propagación del SID en el URL sólo:
session.use_trans_sid = 1
session.use_cookies = 0
session.use_only_cookies = 0
url_rewrite_tags = 'lo que php.ini dá por defecto'

Y OJO por qué PHP con "use_trans_sid a 1" lo que hace es re.escribir ciertos tag's HTML para incrustrar el SID en ellos .. pero no lo hace en redireccionamientos como: header ("Location ...") ni en javacript (window.location ...) y en otros casos. En esos casos necesitas incrustrar el SID a mano en esos URI's ..

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