Foros del Web » Programando para Internet » PHP »

Multiples sesiones desde la misma máquina

Estas en el tema de Multiples sesiones desde la misma máquina en el foro de PHP en Foros del Web. Hola a todos!! Estoy intentando hacer una pequeña aplicación web que contiene un panel de administración en el que hay que validarse con un nombre ...
  #1 (permalink)  
Antiguo 14/12/2011, 17:09
 
Fecha de Ingreso: agosto-2008
Ubicación: Canarias, España - París, Francia
Mensajes: 105
Antigüedad: 15 años, 7 meses
Puntos: 3
Multiples sesiones desde la misma máquina

Hola a todos!!

Estoy intentando hacer una pequeña aplicación web que contiene un panel de administración en el que hay que validarse con un nombre de usuario y contraseña. Esta parte funciona bien.

Por otro lado en el "frontpage" tengo otra validación para aquellos usuarios que estén registrados y como lo están pues podrán ver contenido no visible para los "anonimos". Bien en principio funciona.

El problema es que me he dado cuenta, haciendo pruebas, que si estoy validado en la parte de "frontpage" con un usuario de prueba y entro en el "backstage" con un usuario administrador (osea, yo) pues me aparece mi nombre de usuario en el "frontpage", es decir que se mezclan las sesiones dentro de la misma máquina.
Mis preguntas son:

¿Es esto normal?

¿Se puede hacer algo para solucionarlo y este algo tiene que ver con los nombres de sesiones? y si es así ¿cómo podría hacerlo?

¿Podría hacer que las sesiones se cierren automaticamente despues de n minutos, además de que se cierren cuando cierre la página?

Hay algún buen libro para aprender a programar desde lo más básico a lo más complejo de forma fácil en php??

Muchas gracias a todos
  #2 (permalink)  
Antiguo 14/12/2011, 17:14
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 10 meses
Puntos: 322
Respuesta: Multiples sesiones desde la misma máquina

Lo más seguro es que estés asignando nombres iguales para las sesiones en ambos lugares. Debes saber tener un orden, y con orden me refiero a tener las sesiones reservadas para un sitio y otras (con otro nombre) para el segundo sitio:

Código PHP:
Ver original
  1. // Sesiones del frontend
  2. $_SESSION['front_user'] = 'Acá el nombre del usuario logeado en el frontend';
  3.  
  4. // Sesiones del backend
  5. $_SESSION['back_user'] = 'Acá el nombre del usuario logeado en el backend';
__________________
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
  #3 (permalink)  
Antiguo 14/12/2011, 18:03
 
Fecha de Ingreso: agosto-2008
Ubicación: Canarias, España - París, Francia
Mensajes: 105
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Multiples sesiones desde la misma máquina

Cita:
Iniciado por Sourcegeek Ver Mensaje
Lo más seguro es que estés asignando nombres iguales para las sesiones en ambos lugares. Debes saber tener un orden, y con orden me refiero a tener las sesiones reservadas para un sitio y otras (con otro nombre) para el segundo sitio:

Código PHP:
Ver original
  1. // Sesiones del frontend
  2. $_SESSION['front_user'] = 'Acá el nombre del usuario logeado en el frontend';
  3.  
  4. // Sesiones del backend
  5. $_SESSION['back_user'] = 'Acá el nombre del usuario logeado en el backend';
Hola Sourcegeek, yo lo tengo así:

Código:


Código PHP:
Ver original
  1. if ($login['usuario'] == $usuario && $login['clave'] == $password && $login['nivel']=='1')
  2. {
  3.     session_start();
  4.    
  5.     $_SESSION['usuario'] = $usuario;
  6.     $_SESSION['estado'] = 'Autentificado';
  7.     $_SESSION['nivel'] = '1';
  8.    
  9.     header("Location:listado.php");
  10. }
en un archivo .php que comprueba y redirige hacia listado.php que tiene esto:

Código:
if(isset($_SESSION['usuario']) and $_SESSION['estado'] == 'Autentificado' and $_SESSION['nivel']==1)
{
Claro, ya empiezo a entender...
Otra cosa,: ¿para que sirven los nombres de las sesiones?
  #4 (permalink)  
Antiguo 14/12/2011, 18:05
 
Fecha de Ingreso: agosto-2008
Ubicación: Canarias, España - París, Francia
Mensajes: 105
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Multiples sesiones desde la misma máquina

Funciona!!!
  #5 (permalink)  
Antiguo 14/12/2011, 18:08
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 10 meses
Puntos: 322
Respuesta: Multiples sesiones desde la misma máquina

En realidad son índices del array $_SESSION.
Ahí es donde guardas información que debe mantenerse durante la estadía del sitio, pero información que no se guarda en el
servidor, si no en las cookies del usuario que entra.

Saludos!
http://mx2.php.net/manual/es/reserve...es.session.php
__________________
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
  #6 (permalink)  
Antiguo 14/12/2011, 18:13
 
Fecha de Ingreso: agosto-2008
Ubicación: Canarias, España - París, Francia
Mensajes: 105
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Multiples sesiones desde la misma máquina

Cita:
Iniciado por Sourcegeek Ver Mensaje
En realidad son índices del array $_SESSION.
Ahí es donde guardas información que debe mantenerse durante la estadía del sitio, pero información que no se guarda en el
servidor, si no en las cookies del usuario que entra.

Saludos!
[url]http://mx2.php.net/manual/es/reserved.variables.session.php[/url]
Muchas gracias sourcegeek,

Me he dado cuenta de una cosa: cuando vacias y destruyes la session, lo haces con todas las sesiones abiertas en esa máquina. Por eso digo yo que deberá ser cosa de usar nombres de session.

Código PHP:
Ver original
  1.     session_name('frontpage');
  2.     session_start('frontpage');
  3.    
  4.     $_SESSION['usuariofp'] = $usuario;
  5.     $_SESSION['estado'] = 'Autentificado';
  6.     $_SESSION['nivel'] = '1';
  7. // Iniciar la session del frontpage



Código PHP:
Ver original
  1. <?php
  2. session_start('frontpage');
  3. session_unset('frontpage');
  4. session_destroy('frontpage');
  5. setcookie("sesion","0");
  6. $root = "index.php";
  7. header ("Location: $root");
  8. // Cerrar la session del frontpage
  9. ?>

Creo que debo hacer esto, y lo publico porque, al igual que tu me has ayudado, puede ser que le sirva a alguien que esté en la mism tesitura.

Última edición por rutame; 14/12/2011 a las 18:22 Razón: mejorar
  #7 (permalink)  
Antiguo 14/12/2011, 18:30
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 10 meses
Puntos: 322
Respuesta: Multiples sesiones desde la misma máquina

Claro, puedes hacer uso de nombres, pero también puedes no hacer uso de ellos. Todo depende de cómo destruyas tus sesiones.
Código PHP:
Ver original
  1. sessino_start();
  2. $_SESSION['backend'] = 'admin';
  3. $_SESSION['frontend'] = 'usuario';
  4.  
  5. // Si simplemente quiero cerrar la sesion backend...
  6. unset($_SESSION['backend']);
  7.  
  8. // La sesion frontend sigue activa:
  9. echo $_SESSION['frontend'];

Saludos!

PD: Me alegra que hayas tenido la iniciativa de investigar acerca de nombres, los destroy, etcétera
__________________
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

Etiquetas: autentificar, sesiones, session
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 20:26.