| |||
Control de usuarios Amigos, tengo un tremendo problema, en la empresa donde yo trabajo quieren tener un control de los usuarios conectados (la idea es que se puedan logear una sola vez). Lei en los faq`s de esta página como poder hacer un control con un archivo de texto, incluso encontre como hacerlo con una tabla en una Bd, pero el problema sucede cuando quiero descolgarlos del sistema, porque sucede que no todos los usuarios hacen logout como corresponde, entonces quedarían atrapados en este archivo... probé con javascript con la función onunload, pero resulta que cuando se cambia de página lo renoco como que abandonó el sitio (no distingue entre cerrar ventana y salir de la página)... Alguién tiene alguna idea de como poder hacerlo?... agradesco de ante mano toda la ayuda que puedan dar. |
| |||
Hola, Yo buscaria la solucion por las variables de SESSION con el valor caducado, hay la posibilidad de saber si esta o no en la aplicacion a través si inicio la session o no y ese valor se puede guardar una tabla cada cierto tiempo para saber exactamente donde esta el usuario sino lo escribe y en tu aplicacion de monitoreo tomas la hora actual lees la tabla y si han pasado mas de 5 minutos entonces listo ya no esta conectado. Ojala que te haya ayudado en empezar la solucion, busca todas las preguntas por Session yo lo he leido en algun momento. Saludos Ricardo. |
| ||||
Y como ejemplo.. mira este post: http://www.forosdelweb.com/f18/usuarios-registrados-167694/ Saludos ![]() |
| |||
bueno amigos, muchas gracias por su ayuda, al final cree una tabla y ahi guardo los usuarios que se conectan, pero ahora mi duda es la siguiente ¿Puedo hacer un session_destroy() en forma remota?, me explico, cuando el usuario se conecte desde otra maquina y este aparesca aun en la tabla pueda destruirle la sesión teniendo el identificador guardado, si trato de realizarlo me arroja el siguietne error: Warning: Trying to destroy uninitialized session ¿Como puedo solucionar eso, o definitivamente lo desvio a otra pagina hasta que el tiempo de expiración finalice? A todo esto, la tabla guarda el username, la fecha y hora de conexión y el identificador de session. |
| |||
El mensaje de error te dice que no usastes session_start() antes de pretender usar session_destroy() .. por ende "PHP" no sabe que sesión es la que vas a eliminar. Recuerda que las sesiones son únicas para el cliente que las crea y "PHP" lleva su control de cuales tiene creadas bajo el denominado "SID" (Identificador único de sesión) que tanto se omite pero es el pilar fundamental de las sesiones. Seguro que no conoces ni que es el "SID" por qué PHP propaga el SID en cookies, así que no lo vés directamente y sólo te "das" cuenta de que algo falla cuando lo pierdes como es tu caso puntual. Un saludo, |
| |||
Bueno de echo si conozco el SID, y lo uso, además php lo tengo configurado para que lo propage por medio de la URL, mi duda va en que si yo puedo matar una sesión de otro usuario, obviamente sabiendo su SID. La tabla que uso es la siguiente: CREATE TABLE sessiones ( USUARIO___SES VARCHAR(40) NOT NULL PRIMARY KEY, FECHA_____SES TIMESTAMP, ID________SES VARCHAR(80)); el campo ID________SES guarda el SID de la sesión de cada usuario, pero como puedo controlar que el usuario no se logee mas de 1 vez sabiendo su SID. Por ahora lo desvio a otra pagina, hasta que el tiempo de caducidad haya pasado (uso 1 hora). Bueno eso, ojala puedas ayudarme. Saludos, |
| |||
Si tu lógica ya valida tiempos de expiración para esa sesión .. no tiene sentido "forzar" a PHP para tal fin .. De hecho estás reescribiendo/duplicando la gestión de sesiones de PHP, por qué con tu BD que guardas sesiones y tiempos ya tienes el 90% de lo que hace PHP de por sí .. te faltaría sólo tener un campo más para meter ahí serializadas por ejemplo las variables que contenga esa sesión. Te vendría bien ver como se realiza el cambio del "handdler" completo (el "cómo guarda y gestiona las sesiones") PHP en: http://www.php.net/manual/en/functio...ve-handler.php Tienes ahí mismo ejemplos. Y otro ejemplo que usa Mysql: http://www.zend.com/zend/spotlight/c...lery-wade8.php Si gestionas completamente tu mismo el "handdler" .. borrar una sesión (matarla) se trataría sólo de eliminar dicho registro de tu tabla, por qué todo lo gestiona tu tabla en tu BD. --------- De todas formas .. si quieres probar algo que no sé si funcionará: En teoría .. se puede definir el ID de una sesión en: Código PHP: |
| |||
Hola, bueno la tabla la uso para saber cantidad de usuarios conectados y esas cosas, no para gestionar todo lo relacionado a la sesión, pero voy a echar una mirada a las páginas que me diste, haber si puedo solcionar mi problema. Muchas gracias por tu ayuda. Saludos, |
| ||||
Re: Control de usuarios yo tengo algo bien noob, con codigo para descargarlo free. en http://www.novacreations.net/aplicacion/ te lo bajas eso si le falta seguridad y pasar variables por session pero ya esta la idea, lo que me recuerda debo actualizarlo :P
__________________ Gokuh Salvo al mundo. PUNTO!!!! |