Foros del Web » Programando para Internet » PHP »

Codigo de la funcion session_start

Estas en el tema de Codigo de la funcion session_start en el foro de PHP en Foros del Web. Hola, alguien sabe donde puedo ver el codigo de la funcion session_start, es que no entiendo muy bien como funciona, es decir, cuando pasas de ...
  #1 (permalink)  
Antiguo 12/05/2008, 02:11
 
Fecha de Ingreso: abril-2008
Ubicación: Aquí y Allá
Mensajes: 88
Antigüedad: 16 años
Puntos: 3
Codigo de la funcion session_start

Hola, alguien sabe donde puedo ver el codigo de la funcion session_start, es que no entiendo muy bien como funciona, es decir, cuando pasas de una pagina a otra, y haces session_start(), ¿como sabe la funcion donde esta el session_id? ¿recorre todas las variables de $_POST?, yo uso sesiones y paso el session_id a traves del metodo POST, pero lo que no entiendo es como encuentra el session_id.

Muchas Gracias por adelantado,
Un Saludo a todos



Dudas y preguntas tengo para dar y regalar ...
  #2 (permalink)  
Antiguo 12/05/2008, 02:26
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Codigo de la funcion session_start

Pues segun lo configurado en el php.ini http://es.php.net/manual/es/session.configuration.php . Ahi defines el nombre de la variable, si solo existe en las cookies, etc.
  #3 (permalink)  
Antiguo 12/05/2008, 03:34
 
Fecha de Ingreso: abril-2008
Ubicación: Aquí y Allá
Mensajes: 88
Antigüedad: 16 años
Puntos: 3
Re: Codigo de la funcion session_start

Gracias por contestar

otra cosa, si tengo en la configuracion de php la directiva session.use_cookies a 1 y paso el session_id por POST, ¿me podria ahorrar el pasar el session_id? ¿que es lo mas recomendable? yo es que tengo el session.use_cookies a 1 porque es la configuracion por defecto, se supone que cuando inicias una session se guarda una cookie en el cliente pero, ¿donde? yo es que la busco y no la veo.

supongo que la mejor opcion es pasarlo de una pagina a otra, ya que si el cliente no tiene habilitadas las cookies, la aplicacion fallaría, en todo caso, ¿deberia poner session.use_cookies a 0 si no me interesa? y con respecto a session.use_only_cookies, yo lo tengo a 1 que es el valor por defecto, segun he leido significa que solo se usan las cookies para obtener el session_id, ¿entonces como es que me funciona pasandolo por POST? la verdad es que no entiendo nada, estoy un poco confundida con esto de la configuracion de sessiones en php, si alguien puede ayudarme u orientarme, se lo agradeceré de todo corazón,
me estoy leyendo la documentacion de php al respecto pero, no se, es un poco enredoso ...

Gracias otra vez

Un saludo

----------------------------------------------------------------------
La sabiduria nos llega cuando ya no nos sirve de nada.
  #4 (permalink)  
Antiguo 12/05/2008, 04:42
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Codigo de la funcion session_start

Las cookies se guardan en el tarro de galletas del navegador: IE las mete en un sitio, Firefox en otro. De todas formas, no te importa, ya que es el propio navegador el encargado de enviarte las cookies.

Te funciona con el POST porque el navegador envia por su cuenta la cookie a la vez que tu envias el POST. Toda peticion desde el navegador envia las cookies de ese dominio al servidor.

si, es cierto que con only_cookies si el usuario no tiene activado las cookies, entonces las sesiones no funcionarian. Pero el pasar el id de session por url conlleva riesgos de seguridad, ya que un cracker solo necesita saber el valor del parametro de la url para poder pasarse por el usuario. Creo que es mejor obligar a que tenga activadas las cookies mientras visita tu web que arriesgarse a que le cogan el id de sesion.
  #5 (permalink)  
Antiguo 12/05/2008, 05:06
 
Fecha de Ingreso: abril-2008
Ubicación: Aquí y Allá
Mensajes: 88
Antigüedad: 16 años
Puntos: 3
Re: Codigo de la funcion session_start

Gracias por contestar DarkJ

pero, si mandas el session_id por post, no deberia verse, es decir, no se manda por la url, ¿no?, o sea que si alguien quisiera coger el id de la session cuando es pasado por post, ¿como lo haria?

Realmente para lo que yo uso las sessiones, creo que me daria lo mismo usar un metodo u otro, porque es una aplicacion que esta en un Intranet, la duda que tengo sobre todo, es cual funcionaria mejor para lo que yo quiero, y la configuracion del servidor.

Gracias de nuevo,

--------------------------------------------------------------------------
El tiempo es lo que nos falta, lo que no sobra nunca es el tiempo
  #6 (permalink)  
Antiguo 12/05/2008, 05:15
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: Codigo de la funcion session_start

corregirme si me ekivoko pero


la session id, si teneis el session_start() en cada pagina, no la podeis sakar con session_id() ???

Esq si estais usando sessiones, lo usais para todo no ? XDD

Por lo que veo, voy a explicar la funcion Session_start() un poko :

------

Esta funcion lo que hace es guardar EN EL SERVIDOR la informacion de la persona que esta viendo la pagina, durante un periodo de tiempo DETERMINADO, tenga el usuario las cookies desabilitadas, o no acepte java, da igual, esto es cosa del servidor. y se encarga el ( Tienes q tener las sessiones habilitadas en el servidor claramente, pero suele estar habilitadas en todos los servidores ).

Para usar esta opcion del servidor, hay q poner al inicio de cada pagina ( Y SIEMPRE AL INICIO, Si no da error por enviar las cabeceras ) la clausula :

session_start() ;

---------- Asignacion de Variables

Como ya he dixo, esto se ejecuta en el servidor, y como tal, puede guardar variables aunq cambiemos de pagina. Estas variables las podremos compartir siempre que en las paginas que visitemos, hagamos lo de session_start() ;

es decir :

Código PHP:

Pagina1.php


<?php
session_start
() ;
$_SESSION['msg'] = 'HOLA' ;
?>

Pagina2.php
<?php
session_start
() ;
echo 
$_SESSION['msg'] ;
?>
Eso funcionara perfectamente.

Si necesitais mas Ayuda con sessiones preguntar :D
__________________
» Presupuesto Pagina Web
  #7 (permalink)  
Antiguo 12/05/2008, 05:24
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Codigo de la funcion session_start

Pero lo normal no es que la navegacion de una pagina sea solo mediante POST, lo mas normal es que la mayoria de peticiones sean GET.
Cita:
Esta funcion lo que hace es guardar EN EL SERVIDOR la informacion de la persona que esta viendo la pagina, durante un periodo de tiempo DETERMINADO, tenga el usuario las cookies desabilitadas, o no acepte java, da igual, esto es cosa del servidor. y se encarga el
Los datos si, pero el id de la sesion o se guarda en cookies, o se pasa en todas las peticiones como parametro GET o POST. Y las cookies dependen del visitante, asi que con una configuracion solo cookies si un visitante no las tiene activadas el id no se pasa y no se puede acceder a los datos de la session en el servidor.
  #8 (permalink)  
Antiguo 12/05/2008, 05:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: Codigo de la funcion session_start

a vale, no os habia entendido.


De todas formas, yo he probado a desactivar las cookies, y a desactivar la opcion de PHP q pasaba el automaticamente el SID y seguia funcionando........

xDDDD q cosas mas raras tiene esto :]

Weno d todas formas, PHP se encarga el solo, tiene una variable en el config que se encarga de pasarla por post o get automaticamente.

No es necesario que las paseis vosotros, no ? XD
__________________
» Presupuesto Pagina Web
  #9 (permalink)  
Antiguo 12/05/2008, 05:45
 
Fecha de Ingreso: abril-2008
Ubicación: Aquí y Allá
Mensajes: 88
Antigüedad: 16 años
Puntos: 3
Re: Codigo de la funcion session_start

Gracias por contestar miSko, bueno y a todos en general, sois los mejores,

yo lo de las sessiones lo hago de la siguiente manera (probablemente este mal, pero bueno que se le va a hacer recien conozco el mundo de la programacion y el tema de las aplicaciones web parece ser el mas complicado)

1) en la pagina principal inicio la session: session_start(); y mediante activeX recojo el nombre de usuario de windows y mediante VbScript recojo datos de un fichero si existe, y luego esto lo mando por post a otra pagina. Esta pagina que recoge los datos no la ve el cliente

2) en la siguiente pagina tengo un formulario, antes que nada inicio la sesion:
session_start(); => (supongo que el session_id lo coge de post, ya que yo se lo envio en un campo oculto)
y luego inicializo las variables de la session asi:
$_SESSION['variables'] = $_POST;

Cita:
Iniciado por miSko Ver Mensaje
Weno d todas formas, PHP se encarga el solo, tiene una variable en el config que se encarga de pasarla por post o get automaticamente.
me podrias explicar eso con más detalle? ¿como se llama esa variable del config?

yo es que pesco bastante en estas cosas ...

Gracias de nuevo amigos.
  #10 (permalink)  
Antiguo 12/05/2008, 05:55
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: Codigo de la funcion session_start

La variable es :

session.use_trans_sid

y hay que ponerla a ON.

Os dejo el POST, Explicacion, de Nuestro moderador :


Cita:
Iniciado por Cluster Ver Mensaje
PHP en cuanto a sesiones .. su funcionamiento se basa en el concepto del "SID: Identificador Único de Sesión" .. dato que "relaciona" los datos entre el servidor (donde permanecen . .no como las cookies que están en el cliente) y el cliente (que las creó y usará en su sesión en curso).

Ese "ID" de sesión, un dato aleatorio y único (SID) se ha de "propagar" . .es decir .. que el "cliente" siempre informe al "servidor" de cual debe usar. Por eso es necesario hacer llegar ese dato como sea en la comunicación cliente-servidor.

Las formas de "propagar" ese SID serían por el URL o en cookies. A su vez PHP nos "ayuda" si queremos en el aspecto de crear esa "cookie" para propagar ahí el SID o bien nos "inserta" ese SID en los links que generamos en nuestras páginas, en realidar lo que hace PHP es "re-escribir" ciertos tag's HTML .. por eso por ejemplo no lo hace con redireccionamientos como un header("Location ...") o por javascript (window.location .. etc) o incluso un "META" de tipo refresh ...

Con las funciones session_id() y session_name() se obtiene el "SID" (que también lo tenemos en la constante de nombre SID). SID en realidad (por lo menos de la constante de mismo nombre) es el "nombre de la sesión" + "ID de la sesión".

Si queremos propagar el SID a "mano" .. ya sea por el URL o creando una cookie nuestra própia .. debemos usar esas funciones para obtener el SID y pre-establecer esos valores própios.

La duda viene sobre la propagaciónd el SID .. cual sistema es mejor? . .por cookies o por el URL?

Bueno .. sobre esto todo sistema tiene sus pro's y sus contras.

Propagar el SID en cookies (session.use_cookies a ON) tienen el problema de que no todo usuario las acepta . .otros las bloquean sin saber que bloquean (paranoias) .. Así que sistemas nuestros que propagan el SID en cookies en esos casos no funcionarán. Pero, facilita el código .. (no tienes que preocuparte del "SID" .. esto mismo hace que la gente en "general" no sepa ni que existe este concepto del "SID" y que las sesiones no funcionan "por arte de mágia" sino por eso mismo .. De hecho todos los problemas con sesiones el 99% son derivados de la NO propagación del SID .. ).

Propagar el SID en el URL presenta problemas de seguridad (en www.php.net/session hay un documento que recomienda PHP.net su lecutura sobre el tema). Pero, dá la independecia de que si el "cliente" acepta cookies o no. También se hace necesario insertar el SID manualmenet en links y redireccionamientos que PHP no lo haga por defecto (si así se le indica a PHP que propague el SID por el URL: session.use_trans_sid a ON)

Un saludo,
__________________
» Presupuesto Pagina Web
  #11 (permalink)  
Antiguo 13/05/2008, 09:21
 
Fecha de Ingreso: abril-2008
Ubicación: Aquí y Allá
Mensajes: 88
Antigüedad: 16 años
Puntos: 3
Re: Codigo de la funcion session_start

Gracias miSko por tu respuesta y gracias a Cluster tambien

De las sesiones ahora tengo una idea mucho mas clara, ya me decidere por alguno de los dos metodos,

Gracias otra vez, amigos
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 07:11.