PHP - Sesiones

 
Vista:

Sesiones

Publicado por DvD (13 intervenciones) el 28/04/2005 13:57:58
Hola a todos, tengo un problema con las sesiones en mi pagina php, os comento.

Tengo un formulario tipico (usuario/contraseña) para aceeder a una parte privada y quiero crear una sesion con el nombre del usuario (el que le paso en el formulario) y que este nombre de sesion se guarde y se vaya mostrando en las sucesivas paginas de la parte privada que el usuario visite.

El tema es que tras validar los datos con mi base de datos MySql, me dice todo correcto, inicio la nueva sesion y le asigno el valor del campo \"usuario\", a continuacion hago un echo para mostrar la sesion activa y sale el nombre correcto, pero al intertar pasar ese nombre a la siguiente pagina ya no me lo muestra, en su lugar me sale \"PHPSESSID\"....

lo que quiero saber es como conservar ese nombre y que lo vaya mostrando cuando cambies de pagina para saber el usuario que esta activo

no se si me he explicado con claridad pero necesito ayudaaaaaaaa, por favor

Muchas gracias.

------var.php-------

<?php
session_start();
session_name(\"user\");
session_register(\"user\");
$_SESSION[\"user\"]=\"si\";
echo session_name();
echo \"<a href=\\\"var2.php\\\">siguiente</a>\";

?>

------- var2.php -------

<?php
session_start();
echo session_name();

?>

en esta segunda pagina (var2.php) es donde me sale el PHPSESSID en vez del user
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sesiones

Publicado por maxter (54 intervenciones) el 28/04/2005 14:36:01
Lo primero que veo mal es que cuando imprimes la session no le dices cual es. De todas maneras te recomiendo que descargues este PDF que explica de lo mejor el trabajo con las sessiones y a mí me ayudó a entenderlas de lo mejor http://usuarios.lycos.es/yoandymg/Descargas/Tutorial%20de%20sesiones%20con%20PHP.pdf

Saludos Yoandy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sesiones

Publicado por DvD (13 intervenciones) el 28/04/2005 18:05:04
Muchas gracias Maxter, me he bajao el pdf y en principio creo q funciona.

En el anterior post se me olvido mencionar que estaba interesado en propagar el session_id() url en vez de crear y depender de las cookies (con todo lo que ello conlleva);

en el pdf explica tambien esta opcion, es la que he implementado; y funciona con los cookies blokeados (es decir, la sesion se propaga), pero ahora me surge otro problema:

al propagar la sesion por url, el session_id(), se ve en la barra de direccion, con lo cual cualquiera puede acceder a el e iniciar sesion normalmente.

Mi pregunta es: ¿Hay alguna manera de ocultar esos datos y que siga propagando la sesion en las futuras paginas que se visiten?.

Y un par de cosillas mas, si puede ser ;-) : ¿como hago para ponerle caducidad a las sesiones?. es decir, si un usuario no cierra la sesion manualmente (con el enlace que pongo al logout) la sesion continua activa, me interesa que se cierre automaticamente si hay un periodo de inactividad prolongado.
Ese periodo empezaria a contar desde que se crea la sesion, por lo que volveria a empezar en cada recarga de pagina o visitando otras paginas del site verdad?

Y por último, realmente para que sirve el session_cache_limiter? es para q el navegador no guarde la paginas en la cache? porque he probado con los tres valores (public,nocache,private) y no veo ninguna diferencia.

Muchiiiisimas gracias por ayudar, estoy empezando con PHP y con foros y gente con vosotros estoy aorendiendo un monton.

Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sesiones

Publicado por maxter (54 intervenciones) el 29/04/2005 13:38:17
Bueno te diré que el sessionid si se ve en la URL pero para copiarlo un usuario malintensionado debe o estar en la misma pc o que tu imprimas el sessionid en un link externo y que el webmaster de ese link tenga algo para recoger las session también hay que tener en cuenta que las sessiones expiran, pero tiene 1 solución en el php.ini hay una directiva que se llama session.use_trans_sid inicialmente está en 0 pero si la llevas a 1 ella te imprirá el sessionid en todos los link de tu página relativos o sea no te lo imprimirá en ningún link externo. También le puedes bajar el tiempo de vida de las sessiones en session.gc_maxlifetime ahí le das los segundos de vida que desees.

Contestando a tu primera pregunta si se puede hacer y es pasando las sessiones a través de cookies y para eso debes chequear primeramente que session.use_trans_sid = 0 y pon de la siguiente forma estas directivas

session.use_cookies = 1
session.use_only_cookies = 1

con esta directivas configuras el tiempo de vida de la cookie es en segundo
session.cookie_lifetime = 300

si quieres que los valores de tus sessiones no se pierdan cuando vas hacia atrás o hacia adelante o sea que no te salga el mensaje de session caducada modifica esta directiva
session.cache_limiter = private

Espero que esto te ayude.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sesiones

Publicado por DvD (13 intervenciones) el 29/04/2005 14:36:36
Pues muchiiiisimas gracias Maxter por tu interes y tu tiempo, me has ayudado un monton; ahora tengo el tema de las sesiones bastante mas claro que hace un par de dias.

Lo del session_cache_limiter lo tngo claro, pero con respecto a la caducidad de las sesiones... me has explicado como hacerlo a traves de cookies, pero como te dije, he preferido no aceptar cookies y pasar los valores por url; entonces para establecer un tiempo maximo de sesion bastara con poner session.gc_maxlifetime('lo que sea') junto con cada session_start(); ?...

Gracias

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sesiones

Publicado por maxter (54 intervenciones) el 29/04/2005 15:58:55
Si creo que si aunque si quieres puedes hacerlo en el php.ini y te ahorras tener que ponerlo siempre.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sesiones

Publicado por DvD (13 intervenciones) el 29/04/2005 20:14:33
El caso es que uso un servidor de internet por lo que no tngo acceso a la configuracion del php.ini ... asi que en principio tendre que probarlo poniendolo en cada session_start().

Porque no hay ninguna manera de que yo pueda acceder y personalizar mis paginas verdad?

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sesiones

Publicado por maxter (54 intervenciones) el 30/04/2005 14:36:01
Si es así entonces debes hacerlo a nivel de script.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar