2010-12-13 18 views
6

Al navegar a la red social de Facebook, veo que puedo abrir 2 cuentas (1 en Firefox y la otra en Internet Explorer), o tal vez varias cuentas. Esto no es tan bueno sabiendo que la política de Facebook solo permite abrir una sesión al mismo tiempo.Cómo evitar una sesión

Al iniciar una sesión, ¿cómo evitar que se vuelva a abrir la misma sesión (teniendo en cuenta el nombre de la sesión $_SESSION['user']) en otro navegador (Internet Explorer/Safari/Opera ...)?

De lo contrario, ¿cómo puedo saber (con PHP) que una determinada sesión está abierta en todos los navegadores para evitar que la sesión se abra dos veces?

+2

Almacenar la IP del usuario y si tienen una sesión o no, ¿luego verificar la IP? –

+4

Lo primero que me viene a la mente es tener un indicador booleano 'LoggedIn' en su tabla de usuarios. – Ben

+0

@Rocket, gracias +1, nunca pensé en eso, pero la dirección IP parece ser más difícil de tener que la respuesta de Ben, @Ben, esta es una forma útil (la usaré +1): gracias a todos ! – SmootQ

Respuesta

2
$token = hash('sha256', rand() . microtime() . $_SERVER['REMOTE_ADDR']) // rand as possible 
$_SERVER['user'] = $token; 
+1

Lo siento pero no puedo entender este código muy bien, ¿se trata de una variable de servidor? – SmootQ

+0

Okey, creando una variable de servidor que tomará el nombre de usuario, ¿verdad? – SmootQ

+1

He usado este enfoque antes. Básicamente, cuando el usuario inicia sesión, cree una variable de servidor llamada "usuario_" + su nombre de usuario (por ejemplo, "usuario_simotaqi". Esto tiene un valor basado, entre otras cosas, en el tiempo de inicio de sesión. También almacénelo en la sesión del usuario. carga de página, asegúrese de que coincidan. –

1

En lugar de impidiendo una nueva sesión se abra en un nuevo navegador si ya existe una sesión abierta en otro lugar, consideran invalidar todas las sesiones existentes para esa cuenta de usuario cuando una nueva sesión se produce. Esto minimizará la frustración del usuario y es fácil de implementar.

+0

gracias por llamarme de este problema, verificaré en el otro navegador si el campo de la base de datos del usuario (logedIn) ya = sí, entonces pasaré este ID de usuario a la sesión, gracias +1 – SmootQ

+0

@Simo - Pero eso parece poco confiable. Simplemente mataría/borraría todos los datos de la sesión (para ese usuario en particular) cuando ocurra un inicio de sesión, y creará nuevos datos de sesión para el último inicio de sesión. – karim79

+0

pero si mata/borra todos los datos de sesión de un usuario cuando inicia sesión y crea nuevos datos de sesión, esta sesión solo se abrirá en el navegador utilizado por última vez en el inicio de sesión – SmootQ

Cuestiones relacionadas