Foros del Web » Programando para Internet » PHP »

Duda con función session_start()

Estas en el tema de Duda con función session_start() en el foro de PHP en Foros del Web. Saludos. 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 ...
  #1 (permalink)  
Antiguo 20/10/2006, 15:05
Avatar de jorge25  
Fecha de Ingreso: noviembre-2005
Ubicación: Venezuela, San Juan de Los Morros.
Mensajes: 165
Antigüedad: 18 años, 5 meses
Puntos: 1
Duda con función session_start()

Saludos.

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.

La cuestión es que estoy practicando con este artículo publicado en las FAQs teniendo mi navegador con las cookies desactivadas; resulta que hago el inicio de sesión pero no puedo entrar en la página segura.

Lo que no entiendo es que al parecer ES necesario tener las cookies activadas para que este script funcione y según lo que he leido en varios artículos, es que la función antes comentada crea la variable directamente en el servidor y NO en la máquina cliente. Ahora, también me doy cuenta que efectivamente se crea una cookie en el navegador. ¿Cómo es esto, no es que se crea la variable en el servidor? O sera que esto sucede porque soy yo mi mismo servidor, aunque no me parece porque también he leido que las variables de este tipo se almacenan en el directorio /etc del servidor.

De verdad gracias por alguna sugerencia al respecto. Disculpen que trate de este tema pero la verdad es que no entiendo muy bien. =)

Gracias...!
__________________
Debian GNU/Linux 4.0 "Etch"

La felicidad no es un camino, es un estado de ánimo. Jorge Morgado
  #2 (permalink)  
Antiguo 20/10/2006, 16:31
Avatar de LoUiMaNiAkO  
Fecha de Ingreso: enero-2006
Mensajes: 198
Antigüedad: 18 años, 3 meses
Puntos: 1
en el archivo php.ini deves cambiar el valor de:

; Initialize session on request startup.
session.auto_start = 0

a

; Initialize session on request startup.
session.auto_start = 1
__________________
:molesto: "Soy como dios k nunca llora y como satanas k nunca resa":molesto:

Dejate seducir por mis colmillos
  #3 (permalink)  
Antiguo 20/10/2006, 16:49
Avatar de jorge25  
Fecha de Ingreso: noviembre-2005
Ubicación: Venezuela, San Juan de Los Morros.
Mensajes: 165
Antigüedad: 18 años, 5 meses
Puntos: 1
Cita:
Iniciado por LoUiMaNiAkO Ver Mensaje
en el archivo php.ini deves cambiar el valor de:

; Initialize session on request startup.
session.auto_start = 0

a

; Initialize session on request startup.
session.auto_start = 1
Gracias! y más o menos qué función cumple ese parámetro?

EDITO: Según lo que leí o lo que entendí de lo que leí, gracias session.auto_start se simplifica el escribir la función session_start al inicio del script. Pero creo que no tiene que ver con lo de las cookies. Gracias de nuevo.
__________________
Debian GNU/Linux 4.0 "Etch"

La felicidad no es un camino, es un estado de ánimo. Jorge Morgado

Última edición por jorge25; 20/10/2006 a las 17:01
  #4 (permalink)  
Antiguo 20/10/2006, 21:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por LoUiMaNiAkO Ver Mensaje
en el archivo php.ini deves cambiar el valor de:

; Initialize session on request startup.
session.auto_start = 0

a

; Initialize session on request startup.
session.auto_start = 1
Para nada es recomendable usar session.auto_start a ON ... No en todas las aplicaciones / scripts que uses bajo ese servidor han de usar o requirir sesiones. Es un consumo extra que le das al servidor en los casos donde realmente no usas sesiones .. que .. tal vez dependiendo del tipo de aplicaciones que uses será menor .. pero igualmente a tener en cuenta.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 20/10/2006, 21:55
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.
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 22:18.