tiempo - ¿Destruir remotamente una sesión en php(registros de usuario en otro lugar)?
pasar variables de session entre paginas php (6)
La mejor manera es crear sus propios manejadores de sesión, si usted tiene control total sobre cómo se almacenan / recuperan y controlan las sesiones, no es tan difícil forzar el cierre de sesión y le ofrece una amplia gama de funciones útiles. Si tienes tiempo
Pero, para una solución más rápida: almacene el ID de sesión de PHP en la base de datos con el usuario, y verifique esto en su función isLoggedIn
- o lo que sea que use. Si no coincide, fuerce el cierre de sesión.
Oye, estoy intentando que mi sitio web php básicamente "cierre la sesión" (session_destroy ()) cuando el mismo usuario inicie sesión en otro lugar. ¿Hay alguna forma de hacer esto? ¿Destruir de forma remota una sesión específica?
¡Gracias chicos!
Scott
Me gustaría sugerir que lo que podemos hacer es obtener tiempo y agregar algún valor adicional (como manu1234567) y almacenar en la base de datos cuando el usuario inicie sesión. agregar eso en la sesión también. Ahora, en cada página, compare ambos, y si eso es igual, proceda, de lo contrario, reenvíe a otra página o proporcione algunos mensajes.
ahora otra parte cuando otro usuario inicie sesión con el mismo nombre de usuario y contraseña, la base de datos se actualizará y para la primera persona habrá un mensaje de error "alguien conectado desde algún otro lugar".
Nota: el tiempo siempre será diferente. por lo que habrá muy, muy menos posibilidades de que dos valores sean iguales.
Me imagino que podrías hacer esto usando tu propio manejo de sesión. Si almacena sus sesiones en la base de datos, puede eliminarlas de otra aplicación, si fuera necesario. Identificaría al usuario por nombre de usuario o algo así.
No es necesario crear sus propios manejadores de sesión.
Simplemente almacene el ID de la sesión con el nombre de usuario en la base de datos al iniciar sesión.
Cada vez que el usuario busca una página, compare la ID de sesión de ese usuario con la ID de sesión almacenada.
Si los ID de sesión no coinciden, significa que el usuario ha iniciado sesión en otro lugar, y debe autodestruirse.
Otra cosa que podrías hacer además de la respuesta de Jon (que es genial, +1), es inicialmente verificar de dónde vino el usuario (referencia) y destruir la sesión si el usuario proviene de otra página web distinta a la tuya.
$referer = $_SERVER[''HTTP_REFERER''];
$referer = parse_url($referer);
if($referer[''host''] != "yoursite.com" || $referer[''host''] != "www.yoursite.com") {
session_destroy();
}
Ciertamente es posible, usando session_id
. Cuando el usuario inicia sesión en otro lugar, puede hacer este paso antes de comenzar una nueva sesión para el nuevo inicio de sesión:
// The hard part: find out what $old_session_id is
session_id($old_session_id);
session_start();
session_destroy();
// Now proceed to create a new session for the new login
Esto destruirá la sesión anterior en el lado del servidor, por lo que cuando la otra computadora acceda nuevamente a su aplicación, intentará acceder a una sesión inexistente y se creará una nueva (en la que el usuario ya no inicia sesión). .
La parte difícil es descubrir cuál es el ID de la sesión "anterior". No hay una forma única de hacerlo; necesita tener algún mecanismo para poder decir que la sesión con id XXX pertenece al mismo usuario que está iniciando sesión ahora. Si está utilizando sesiones de base de datos esto debería ser lo suficientemente fácil.