Foros del Web » Programando para Internet » PHP »

Duda sobre sesiones PHP

Estas en el tema de Duda sobre sesiones PHP en el foro de PHP en Foros del Web. Buenas a todos: Me esta surgiendo una pequeña duda con las sesiones. Hasta ahora me va funcionando pero no se si lo estoy haciendo de ...
  #1 (permalink)  
Antiguo 03/05/2010, 09:58
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Pregunta Duda sobre sesiones PHP

Buenas a todos:

Me esta surgiendo una pequeña duda con las sesiones.

Hasta ahora me va funcionando pero no se si lo estoy haciendo de la forma mas correcta, tiene que ver con pasar el id de la sesión o del usuario en la URL.

Como digo hasta ahora me funciona pero no estoy pasando nada en la URL.
Quiero decir, el usuario se logea, accede a sus datos personales, puede navegar por la web sin problemas y puede cerrar la sesión en cualquier momento... que funciona.

Utilizo el siguiente código en cada página para saber si el usuario que esta accediendo al apartado esta logeado o no.

Código PHP:
<?php
    
//Obtención de los datos del usuario logeado.
    
if ($_SESSION['s_state'] == "on"){
        echo 
"Usuario: ".$_SESSION['s_username']." ".$_SESSION['s_usersurname']."";
    
?>
    <div class="botonAcceso"><a href="user-skill.php"><img src="imagenes/miPerfil.jpg" onmouseover="this.src='imagenes/miPerfilOn.jpg'" onmouseout="this.src='imagenes/miPerfil.jpg'"/></a></div>
    <div class="botonAcceso"><a href="logout.php"><img src="imagenes/cerrarSesion.jpg" onmouseover="this.src='imagenes/cerrarSesionOn.jpg'" onmouseout="this.src='imagenes/cerrarSesion.jpg'"/></a></div>
    <?php
    
}else{
    
?>
    <script>redireccionarRestringido();</script>
    <?php
    
}
?>
Cuando el usuario se logea por primera vez coloco la variable de sesion "s_state" a on y lo compruebo en todas las páginas que visita y a las que solo se puede acceder siendo usuario registrado.

Mi duda surge cuando hay mas de un usuario al mismo tiempo logeado... como se identifica cada usuario?


Tengo variables de sesión distintivas como puede ser el email pero no las estoy utilizando para nada...

Tengo que utilizar el envio de datos a través de la URL?
  #2 (permalink)  
Antiguo 03/05/2010, 10:01
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Duda sobre sesiones PHP

Hola, No tienes que hacer nada.
Las variables de sesión son únicas por usuario.

Saludos.
  #3 (permalink)  
Antiguo 03/05/2010, 10:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Duda sobre sesiones PHP

Las sesiones crea un id en un cookie (y si no tienes las cookies habilitadas lo mantiene en una variable constante SID, y esta para que se mantenga tienes que indicarlas en la dirección) que identifica que usuario es el que está conectado y verifica ese id que genera y así le asigna las otras variables que corresponde a ese ID.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 03/05/2010, 10:06
Avatar de function  
Fecha de Ingreso: abril-2010
Mensajes: 278
Antigüedad: 14 años
Puntos: 13
Respuesta: Duda sobre sesiones PHP

Cita:
Iniciado por carlosdanielmou Ver Mensaje
Hola, No tienes que hacer nada.
Las variables de sesión son únicas por usuario.

Saludos.
No hace falta pasar datos via url, ya que las sesiones como bien dijo carlosdanielmou las sesiones son unicas para cada usuario. Por ende son invisible para el ojo del usuario y si las quieres ver solo tienes que llamarlas y mostrarlas, asi que estate tranquilo que por lo visto esta bien

saludos
  #5 (permalink)  
Antiguo 03/05/2010, 10:10
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Duda sobre sesiones PHP

Cuando no envias el id de session por la url, se guarda en una cookie, y cada usuario tiene una id de session diferente en sus cookies, no van a poder acceder a datos que no son suyos, porque no tienen la misma session.

Una cosa que te queria comentar es que he visto que haces una redirección con javascript a los usuarios que no pueden acceder ahí, aunque en ese ejemplo no hay problema porque no se mostraría ningún dato, te recomiendo que las redirecciones las hagas con PHP, ya que javascript se puede desactivar y ya no se redireccionará.

EDIT: No leí las demás respuestas

Un saludo
  #6 (permalink)  
Antiguo 03/05/2010, 10:11
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Duda sobre sesiones PHP

Vaya! que rapidez! muchisimas gracias a todos!

Pero... jeje siempre hay un pero, abimaelrc me has dejado con la duda:
En el caso de que el usuario tenga las Cookies deshabilitadas me imagino que tengo que incrustar el SID en la URL y despues será necesaria controlarlo no?

Muchas gracias a todos!
  #7 (permalink)  
Antiguo 03/05/2010, 10:14
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Duda sobre sesiones PHP

Para Heli0s:

El problema es que el chekeo del usuario lo realizo dentro de lo que sería el body de la página y para redireccionar con el header("..."); de PHP tiene que estar limpio de código Html, sino me tira un error...

Alguna otra solución o sugerencia con respecto a la estructura del código para hacerlo funcionar mediante PHP?
  #8 (permalink)  
Antiguo 03/05/2010, 10:16
Avatar de function  
Fecha de Ingreso: abril-2010
Mensajes: 278
Antigüedad: 14 años
Puntos: 13
Respuesta: Duda sobre sesiones PHP

Cita:
Iniciado por tokero Ver Mensaje
Para Heli0s:

El problema es que el chekeo del usuario lo realizo dentro de lo que sería el body de la página y para redireccionar con el header("..."); de PHP tiene que estar limpio de código Html, sino me tira un error...

Alguna otra solución o sugerencia con respecto a la estructura del código para hacerlo funcionar mediante PHP?

si lo que quieres es checkear al usuario y redireccionarlo, ponlo encima del codigo html, seguro que te funciona.
  #9 (permalink)  
Antiguo 03/05/2010, 10:20
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Duda sobre sesiones PHP

¿Y por que no haces la comprobación antes de cualquier etiqueta HTML?, de todos modos también esta la opción de usar ob_start, y ob_end_flush.

ob_start: http://es2.php.net/manual/es/function.ob-start.php
ob_end_flush: http://es2.php.net/manual/es/function.ob-end-flush.php

Un saludo
  #10 (permalink)  
Antiguo 03/05/2010, 10:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Duda sobre sesiones PHP

Tu lo que tienes que hacer es pasar la variable constante SID y luego con session_id tomas el valor de la sesión
Código PHP:
Ver original
  1. <?php
  2. $_SESSION['bar'] = 'foo';
  3. header('Location: candy.php?' . SID);
candy.php
Código PHP:
Ver original
  1. <?php
  2. session_id($_GET['PHPSESSID']);
  3. var_dump($_SESSION);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 03/05/2010, 10:26
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Duda sobre sesiones PHP

Gracias de nuevo por vuestras respuestas:

Si no lo he chequeado antes de cualquier etiqueta HTML es por que obtengo los datos como en nombre y el apellido del usuario para mostrarlos en una especie de menu lateral donde puede acceder a su area de usuario en cualquier momento, y claro, tiene que estar formateado con imagen, etc...

Voy a echar un vistazo al ob_start, ob_end_flush!

Gracias a todos de nuevo!
  #12 (permalink)  
Antiguo 03/05/2010, 10:49
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 15 años
Puntos: 1
Respuesta: Duda sobre sesiones PHP

Bueno, despues de darle unas cuantas vueltas lo tengo bastante claro!

La duda principal surgía en el caso de varios usuarios conectados al mismo tiempo y con la explicación del funcionamiento de la cookie SID esta resuelta.

Utilizare el envio por URL de la ID de sesión para quitarme dolores de cabeza y con respecto al redireccionamiento mediante JSP creo que no me va a quedar mas remedio.

Muchas gracias a todos por la colaboración!
  #13 (permalink)  
Antiguo 03/05/2010, 10:50
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Duda sobre sesiones PHP

Si se graba en un cookie el SID viene vacio. Vas a tener que hacer una verificación si el SID está vacio y si es así entonces se grabo exitosamente en el cookie si no está vacio entonces la declaras en la barra de direcciones.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: sesiones
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 01:35.