Foros del Web » Programando para Internet » PHP »

Sesión de usuario registrado (login)

Estas en el tema de Sesión de usuario registrado (login) en el foro de PHP en Foros del Web. Hola, quería hacer una pregunta y es la siguiente, ¿cuál es la mejor manera de mantener una sesión de usuario registrado? Hago la pregunta porque ...
  #1 (permalink)  
Antiguo 24/12/2013, 12:25
 
Fecha de Ingreso: septiembre-2013
Mensajes: 19
Antigüedad: 10 años, 6 meses
Puntos: 0
Sesión de usuario registrado (login)

Hola,
quería hacer una pregunta y es la siguiente, ¿cuál es la mejor manera de mantener una sesión de usuario registrado?

Hago la pregunta porque he tenido un problema. Tengo 3 webs en mi servidor local donde hay usuarios que se registran y siempre utilizo una variable de sesión igual para comprobar que se logueó correctamente, una tal que así:

Código PHP:
$_SESSION['user'
Entonces he notado que si me logueo en una de mis webs, y accedo a otra, como todas están en "localhost" se cruzan los usuarios y detecta como que un usuario exclusivo de la "web 1" está logueado en la "web 2" o 3.

A lo mejor el problema podría no pasar de ahí, pero es que 2 de esas webs si comparten dominio y podría tener algún problema de funcionamiento en el servidor remoto.

Para más detalles, cuando se loguea un usuario hago esto:

Código PHP:
session_start();
$_SESSION['user'] = $nombre_usuario
Y en cada página que compruebo su logueo simplemente:

Código PHP:
session_start();
if(isset(
$_SESSION['user']))
{
echo 
"Bienvenido, " $_SESSION['user'];

¿Como podría evitar esos cruces?

Saludos.
  #2 (permalink)  
Antiguo 24/12/2013, 13:16
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Sesión de usuario registrado (login)

dejando una variable que diferencie la web

ejemplo

primera web
Código PHP:
session_start();
if(isset(
$_SESSION['user']) and $_SESSION['web']==1)
{
echo 
"Bienvenido, " $_SESSION['user'];

web 2

Código PHP:
session_start();
if(isset(
$_SESSION['user']) and $_SESSION['web']==2)
{
echo 
"Bienvenido, " $_SESSION['user'];

  #3 (permalink)  
Antiguo 24/12/2013, 13:25
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Sesión de usuario registrado (login)

El resultado sería el mismo ya que en todas las 3 web se reemplazaría $_SESSION['user']... tendrías que trabajar con un virtualhost y de esa manera podrías definir para que "subdominio" aplicaría la sesión que estás trabajando... lo otro que podrías hacer es crear una variable de sesión por cada web.

web1
Código PHP:
Ver original
  1. if( !isset($_SESSION['web1']) ){
  2.     $_SESSION['web1'] = array();
  3. }
  4. $_SESSION['web1']['user'] = $nombre_usuario;

Código PHP:
Ver original
  1. if(isset($_SESSION['web1']['user'])){
  2.     echo $_SESSION['web1']['user'];
  3. }

web2
Código PHP:
Ver original
  1. if( !isset($_SESSION['web2']) ){
  2.     $_SESSION['web2'] = array();
  3. }
  4. $_SESSION['web2']['user'] = $nombre_usuario;

Código PHP:
Ver original
  1. if(isset($_SESSION['web2']['user'])){
  2.     echo $_SESSION['web2']['user'];
  3. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 24/12/2013, 13:47
 
Fecha de Ingreso: septiembre-2013
Mensajes: 19
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Sesión de usuario registrado (login)

Gracias a los dos.

Basándome en los dos mensajes, creo que estaría bien si hiciera algo así:

Código PHP:
session_start(); 
$_SESSION['user'] = $nombre_usuario;
$_SESSION['web'] = $_SERVER['HTTP_HOST']; 
Y luego además del usuario comprobar si el host es el actual:

Código PHP:
if($_SESSION['web'] == $_SERVER['HTTP_HOST'])
{
//Dar acceso

Probaré con esta, y si no, con alguna de vuestras opciones.
  #5 (permalink)  
Antiguo 24/12/2013, 13:53
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Sesión de usuario registrado (login)

No, como te comente, independientemente de si haces la verificación del host o no $_SESSION['user'] se reemplazará no importa en la web que estés

Código PHP:
Ver original
  1. //web 1
  2. $_SESSION['user'] = 'Percival';
  3.  
  4. //web 2
  5. if(isset($_SESSION['user'])){
  6.     echo $_SESSION['user']; //imprime Percival porque ya en la web1 la has declaradado
  7. }

Yo te propongo dos opciones, una que uses virtualhost y la otra más simple es que trabajes con un array para cada web

Código PHP:
Ver original
  1. //web 1
  2. $_SESSION['web1']['user'] = 'Percival';
  3.  
  4. //web 2
  5. $_SESSION['web2']['user'] = 'Gawain';

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: login, sesiones, session_start
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 03:06.