Foros del Web » Programando para Internet » PHP »

Saber si ya hay una sesión creada (session)

Estas en el tema de Saber si ya hay una sesión creada (session) en el foro de PHP en Foros del Web. Hola. Pues ese es mi problema. Necesito detectar si ya se inicio una sesión (start_session) en una pagina para saber si al usuario se le ...
  #1 (permalink)  
Antiguo 09/08/2011, 19:40
Avatar de EthanBrody  
Fecha de Ingreso: abril-2011
Ubicación: Tierra Blanca, Veracruz-Llave, Mexico, Mexico
Mensajes: 21
Antigüedad: 13 años, 7 meses
Puntos: 1
Pregunta Saber si ya hay una sesión creada (session)

Hola. Pues ese es mi problema.

Necesito detectar si ya se inicio una sesión (start_session) en una pagina para saber si al usuario se le puede permitir dicha pagina o no.

La cosa es que aun no entiendo como hacerlo si cada pagina que manejo debe llevar al inicio un start_session pues logicamente si pregunto que ya hay una sesion creada pues ya la habrá por esa linea forzosa de codigo.!

Es que tengo un sistema php que se compone de varias paginas... Y yo quiero que solo se permita entrar a dicho sistema mediante la pagina 1. Y que si alguien trata de entrar a la pagina 2 o 3 sin haber entrado a la 1, no se le permita.

Estaba trabajando guardando desde la pagina 1 el Id de la sesion creada (session_id) y en las otras paginas comparar el id de sesion con la que ya guarde. Pero por alguna razon siempre me da el mismo ID. Nunca recibo uno diferente, por lo que esto no funciona.
  #2 (permalink)  
Antiguo 09/08/2011, 19:50
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Saber si ya hay una sesión creada (session)

session_start() crea la session pero no introduce datos dentro de esta session.

Para guardar datos en la session, debes usar la superglobal $_SESSION.

En tu primera pagina guardas un valor, y luego verificas en tus demás paginas si esa variable esta seteada o si no esta vacia.

Código PHP:
Ver original
  1. //Primera pagina:
  2. $_SERVER['primeraPagina'] = true;
  3.  
  4. //Luego en tus demas paginas:
  5. if(!isset($_SERVER['primeraPagina']) || empty($_SERVER['primeraPagina'])) {
  6.   //No provino desde la 1era pagina
  7.   //Redireccionar
  8. }
  #3 (permalink)  
Antiguo 09/08/2011, 20:23
Avatar de EthanBrody  
Fecha de Ingreso: abril-2011
Ubicación: Tierra Blanca, Veracruz-Llave, Mexico, Mexico
Mensajes: 21
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Saber si ya hay una sesión creada (session)

Ok. Esa respuesta suena muy lógica. Pero ya que apenas estoy empezando PHP tal vez resulte muy tonto lo siguiente. Nunca he manejado $_SERVER, entonces ¿Porque conviene mas guardar la variable en $_SERVER, en vez de guardarla como una variable mas de la sesion con $_SESSION?
  #4 (permalink)  
Antiguo 09/08/2011, 20:44
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Saber si ya hay una sesión creada (session)

Al parecer el amigo se equivocó... El array $_SERVER ya contiene información, no guardes nada en el. Lo correcto es usar $_SESSION para almacenar valores propiamente en una sesión.

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 09/08/2011, 20:47
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Saber si ya hay una sesión creada (session)

Oops ... Precisamente como te indica Sourcegeek, hice un error cuando estaba escribiendo el codigo. En vez de $_SERVER es $_SESSION.

Mil disculpas por la confusion.

Etiquetas: seguridad, session, session_id, usuarios
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:19.