Foros del Web » Programando para Internet » PHP »

Algo fácil sobre sesiones, pero no la sé

Estas en el tema de Algo fácil sobre sesiones, pero no la sé en el foro de PHP en Foros del Web. Hola. He estado revisando mensajes en este foro y algo me aclararon, pero ahí van mis inquietudes. Código PHP: <? session_name ( "misesion" ); session_start ...
  #1 (permalink)  
Antiguo 18/02/2003, 07:54
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Algo fácil sobre sesiones, pero no la sé

Hola.
He estado revisando mensajes en este foro y algo me aclararon, pero ahí van mis inquietudes.
Código PHP:
<?
session_name
("misesion");
session_start();
// resto de fuciones o acceso a variables de esta sesion
?>
Ahora bien, cómo puedo propagar el SID que no sea por cookies, sino por URL. Sería algo así como:
Código PHP:
echo "<a href=\"pagina.php?".session_name()."=".session_id()."\">ir a pagina</a>"
¿Esto me crearía un link del tipo pagina.php?misesion=a456sf6asf65sdaf65sad4fsa? Y luego si en la página que lo recibe hago:
Código PHP:
<?
session_name
("misesion");
session_start();
//resto de tonterías
?>
¿Entonces me reconoce mi sesión sin problemas, pudiendo así ir usando mis variables de sesión?

Además me gustaría no usar cookies sino que siempre sea por URL. Por cierto, a ver si es posible sin cambiar nada en la configuración del PHP, ya que no tengo acceso a ella en el servidor.
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #2 (permalink)  
Antiguo 18/02/2003, 08:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Puedes forzar a PHP par q no use propagación en cookies del SID de la session ..

Tambien puedes forzar a PHP a que propague automaticamente el SID (Identificador único de session) si es qu no lo hace ya por defecto en tu PHP.ini de ese servidor (lo puedes ver en un phpinfo() en la directiva session.use_trans_sid = 1 en tal caso no seria necesario q propagases manualmente el SID como lo estas haciendo en el ejemplo q pusistes).

Para "forzar a PHP" lo puedes hacer con ini_set() .. ejemplo:

Código PHP:
<?
ini_set
("session.use_cookies","0");
ini_set("session.use_trans_sid","1");

session_name("nombresesion");
session_start();
// etc ...
?>
NOTA: .. No todos los servicios de Hosting dejan usar ini_set() para ajustar directivas php.ini en tiempo de ejecución ...

Un saludo,
  #3 (permalink)  
Antiguo 19/02/2003, 16:28
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Nuevamente por aquí...
Quiero decir que ya tengo casi todo claro sobre las sesiones, pero quiero preguntar una duda sobre seguridad.
Supongamos que uso propagación por link. Entonces un usuario hace sus chorradas y tal. Cuando acaba, supongamos que el usuario se va y entonces se sienta otro al ordenador que es un y descubre que se ha quedado grabado el link con su correspondiente SID en la barra de navegación, por lo que accede a esa página y tiene control sobre los datos del anterior usuario si no han pasado los ¿10 minutos?
Es decir, hago session_destroy y tal, y verifico que el archivo de nombre raro que debe aparecer en la carpeta sessions también desaparece, pero lo bueno está en que si entro por el citado link me vuelve a aparecer con todos los datos introducidos.
Voy al php.ini y ¡olé!, esto mismo viene explicado, pero no viene la solución. ¿Acaso la hay?
¿Y si usara cookies? ¿También podría pasar algo de esto? ¿En tal caso, cómo borrar la cookie que contiene el SID o hacer lo que sea para tener seguridad?
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #4 (permalink)  
Antiguo 19/02/2003, 20:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cuando tu haces tu session_destroy() .. la session pasa al modo "garbage" esto es; "esperando el camion de la basura" el cual borrará la session fisicamente del servidor (el ficherito q se crea ..) Pero la session no es valida.

Si alguien conserva ese SID de sesione .. PHP no reconocerá como una session valida (un SID valido) y creará uno nuevo para la session en tal caso tu lógica de comprobacion de variables de la sesion ya actuará en consecuencia (es una sesision nueva).

Es tiempo lo determina:
session.gc_maxlifetime = 0
Si lo usas a 0 .. tan pronto se registra la session .. entra en modo "garbage" que vendría a ser = a "si cierras navegador" borra session (independiente de q tu borres antes la session haciendo un session_destroy() ..)

Si propagas el SID por cookies .. la cookie se le dá el mismo tiempo de expiración q a la del servidor .. Tambien puedes controlarlo tu a mano via la directiva:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

Creo q por defecto viene así en las configuraciones de PHP .. así q no te tendrias q preocupar de ese aspecto si propagas el SID por cookies ..

Un saludo,

Última edición por Cluster; 19/02/2003 a las 20:20
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 02:17.