[Php-avanzado] sesiones
Ariel Fernández
arielf05 en gmail.com
Mar Oct 28 23:50:26 ART 2014
Al final no me pude conectar porque apagaron las máquinas, veré mañana o
pasado.
Pero he estado indagando un poco sobre el tema, y no me queda nada claro,
porque sólo utilizo un usuario para conectar a la BD y son sólo dos pc (una
servidor y una cliente funcionando localmente) y se usan ambas por
supuesto. (Imagínense si fuese un sitio en internet !!! )
Será conveniente utilizar conexión persistente a mysql ? o tal vez limitar
el número máximo de conexiones al servidor mysql ? según ví por ahí, eso
mejora la performance general de los scripts, permitiendo liberar más
rápidamente recursos....Lo extraño es que sólo se hace lenta la cliente y
no la que funciona como servidor....
El 28 de octubre de 2014, 11:57, Ariel Fernández <arielf05 en gmail.com>
escribió:
> Otro inconveniente que estoy teniendo es que el sistema en la pc cliente,
> comienza a funcionar muy lento al rato de arrancar la máquina. Tanto pc
> server como pc cliente utilizan windows 8, pero sólo la pc cliente funciona
> lento. Hoy me conectaré por remoto para tratar de ver qué está pasando.
> Está instalado usando WAMP, y el antivirus está desactivado para la carpeta
> wamp completa, según me dicen.
>
> No sé si a alguien le habrá pasado algo similar, pero me resulta muy
> extraño ese comportamiento, por más que sea windows !
>
> Saludos
>
> El 20 de octubre de 2014, 15:24, Leonardo Tadei - Pegasus Tech Supply <
> leonardot en pegasusnet.com.ar> escribió:
>
> Hola Ariel,
>>
>> El lun, 20-10-2014 a las 08:20 -0300, Ariel Fernández escribió:
>> > 1) exactamente.
>>
>> Entonces esto no sería un problema.
>>
>> > 2) tenés razón, hice eso y deshabilité lo de las cookies. Y que el
>> > usuario verifique si está utilizando el login correcto. AHORA
>> > FUNCIONA.
>>
>> Listo el pollo!
>>
>> > 3) cierto! esto te da una idea de lo confundido que ando con el
>> > tema :)
>> > porque yo estaba pensando que sesiones y cookies iban de la mano, pero
>> > son dos cosas diferentes. Las cookies se guardan en cliente y sesiones
>> > en servidor (pero también con una cookie...) Lo del recolector de
>> > basura es de php para el servidor, justamente para limpiar las cookies
>> > de sesión.
>>
>> Bueno, seguís mezclando las cosas. El GC del servidor limpia las
>> sesiones no las cookies. No puede limpiar las cookies porque están el el
>> cliente ;-)
>> El tema es que el cliente al enviar la cookie, no se restaura
>> ninguna
>> sesión porque ya no existe.
>>
>> > O sea que yo podría usar sesiones solamente y no necesariamente
>> > cookies para mantener el logueo y parece que sí, porque ahora funciona
>> > con lo que hice en 2)
>>
>> Sí se puede, pero implica, como vimos en clase, tener que enviar
>> en
>> cada GET y POST el ID de la sesión para saber cual restaurar.
>> Permitir las cookies del lado del cliente te evita enviar siempre
>> estos
>> valores.
>>
>> Estuviste en la clase de sesiones, no? Ahí charlamos sobre todo
>> esto!
>>
>> > 4) ok, esto lo dejamos de lado.
>>
>> Igual tenelo en mente, porque para escenarios de intranet es muy
>> útil.
>>
>> > 5 y 6) ok, pero como es intranet, lo mantengo logueado hasta que
>> > cierre navegador o luego de 8hs de inactividad, esto último
>> > simplemente por si no usan una de las máquinas y queda encendida y
>> > logueada.
>>
>> Para mantener al usuario logueado 8 horas tenés que cambiar el
>> tiempo
>> de vida de la sesión (para que no se desconecte en periodos sin
>> actividad) y manejar vos la expiración a las 8hs del primer login... el
>> comportamiento por default es solo x minutos después del último acceso,
>> es decir que solo te desconecta por inactividad y si hay actividad, no
>> te desconecta nunca.
>>
>> > 7) ah, o sea que con la configuración se session.lifetime ya
>> > alcanzaría para "matar" la sesión automáticamente...
>>
>> Sí, pero el reloj cuenta, como te digo arriba, a partir del último
>> acceso y no a partir del login.
>>
>>
>> > Saludos
>>
>> =mente!
>>
>>
>>
>> > El 17 de octubre de 2014, 20:06, Leonardo Tadei - Pegasus Tech Supply
>> > <leonardot en pegasusnet.com.ar> escribió:
>> > Hola Ariel,
>> >
>> > hay varias cosas que me hacen ruido:
>> >
>> > 1) Si los usuarios usan el sistema permanentemente, será muy
>> > raro que se
>> > desconecte por inactividad, ya que a cada click tenés que
>> > estar
>> > actualizando el timestamp de la sesion, para que su vida se
>> > estire.
>> >
>> > 2) Si todo corre en una intranet, por qué simplemente no
>> > permitís el
>> > login múltiple? De esta forma si alguien se sienta en otra PC
>> > y se logea
>> > de nuevo como en el escenario que describís, ahora está dos
>> > veces
>> > logueado y no se "pierde" lo que el usuario que no se logueó
>> > está
>> > cargando.
>> >
>> > 3) las sesiones no se guardan en el navegador, sino en el
>> > servidor, así
>> > que cuando decís de "recolección de basura del navegador"
>> > estás pensando
>> > fuera del tarro ;-)
>> >
>> > 4) la autentificación de Apache si sigue y se seguirá usando.
>> > No es
>> > rústica, sino que solo soporta usuario y contraseña, así que
>> > en ese
>> > sentido es limitada. Sin embargo se puede ampliar con más
>> > datos de
>> > perfil, relacionando el usuario del .htaccess con un registro
>> > en una
>> > tabla. Tiene como ventaja y como desventaja que los usuarios
>> > nunca se
>> > desloguean mientras no cierres el navegador o aprietes un
>> > "salir" que
>> > implemente el logout.
>> >
>> > 5) es incompatible no desloguear nunca a nadie con la
>> > seguridad.
>> >
>> > 6) es incompatible tener control del usaurio logueado y no
>> > molestarlo de
>> > vez en cuando pidiéndole que se loguee!
>> >
>> > 7) el tiempo máximo de vida de la sesión te determina la
>> > duración
>> > máxima, independientemente de lo que software haga.
>> >
>> >
>> > Conciliá las cosas en tu implementación de AAA para
>> > este software y
>> > luego veamos los problemas técnicos...
>> >
>> > Saludos!!!
>> >
>> >
>> > El mié, 15-10-2014 a las 21:44 -0300, Ariel Fernández
>> > escribió:
>> > > Hola Leo !! no he buscado clases ahí, sólo ejemplos por la
>> > web, aunque
>> > > la base fue uno de los tuyos.
>> > >
>> > >
>> > > Mirá, en realidad, al principio me fallaba, luego funcionó
>> > bien y creí
>> > > que había sido por el recolector de basura del navegador,
>> > que lo había
>> > > configurado mal y me eliminaba los archivos de cookies. Pero
>> > resulta
>> > > que cuando instalé la aplicación en otra máquina,
>> > manteniendo todas
>> > > las configuraciones de apache y php, el login comenzó a
>> > fallar. Me
>> > > detecta que ya hay un usuario logueado (este chequeo lo hace
>> > > verificando el número de sesión en la base de datos, por
>> > eso, cuando
>> > > cierran el navegador sin hacer logout, el campo donde
>> > almaceno el id
>> > > de la sesión no se limpia y queda con el último usado y es
>> > como si
>> > > hubiese una sesión activa). Entonces, el sistema da la
>> > opción de
>> > > eliminar la sesión anterior, lo cual no es más que vaciar el
>> > campo id
>> > > de la base y hacer otro login. También se podría guardar la
>> > IP por
>> > > ejemplo, o ambas cosas...
>> > >
>> > >
>> > > Lo de los minutos, entiendo que no es bueno mucho tiempo,
>> > pero no se
>> > > trata de una aplicación online, sino que trabaja en red
>> > local, y sería
>> > > molesto tener que loguear a cada rato, además, es un sistema
>> > que lo
>> > > utilizan permanentemente por lo cual no tiene mucho tiempo
>> > de
>> > > inactividad. Para que te de una idea, el tiempo de la sesión
>> > lo
>> > > establecí en 8hs, luego de eso debería cerrarse la
>> > sesión...digo
>> > > debería, porque a mí me funcionaba, pero ya veremos....
>> > >
>> > >
>> > > Con .htaccess nunca busqué nada, me parecía que era algo de
>> > tipo
>> > > rústico...no sé....se utiliza eso?
>> > >
>> > >
>> > > Lo de "pérdida de datos" es más bien una advertencia que
>> > muestro al
>> > > usuario, porque inicialmente lo pensé por el lado de que si
>> > un usuario
>> > > inicia sesión en otra máquina, y no cerró la sesión en la
>> > máquina
>> > > anterior y alguien la estaba usando, y encima ese usuario la
>> > elimina
>> > > automáticamente (borrar el id de sesión de la base),
>> > entonces los
>> > > datos que estuvieran cargando ya no podrían guardarse porque
>> > el
>> > > sistema se cerrará solo, en el instante que chequee que la
>> > sesión fue
>> > > eliminada. No sé si fue claro ésto, puede ser medio
>> > confuso. Y tal
>> > > vez tenga que ver con el bolonqui que tengo ahora jeje
>> > >
>> > >
>> > > Trataré de ser más gráfico:
>> > > _Usuario A se logueó en máquina X y trabajó normalmente.
>> > > _Luego de un tiempo, Usuario A se va de la máquina X sin
>> > cerrar sesión
>> > > (porque se olvidó o lo que sea).
>> > > _Llega Usuario B y trabaja en máquina X con la sesión de
>> > Usuario A
>> > > (intencionalmente o no, sigue utilizando la sesión que
>> > estaba activa).
>> > > _Usuario A vuelve y ve máquina X ocupada e intenta loguearse
>> > en
>> > > máquina Z. (desconoce que el Usuario B está utilizando su
>> > sesión)
>> > > _En máquina Z, el sistema advierte a Usuario A que ya hay
>> > una sesión
>> > > iniciada en otra máquina (recordá Leo que está activa la
>> > sesión de
>> > > máquina X y en uso) y entonces le da la opción de eliminarla
>> > > automáticamente pero advirtiendo de la posible "pérdida de
>> > datos" si
>> > > es que la están utilizando.
>> > > _Usuario A decide eliminar esa sesión (de máquina X) para
>> > poder
>> > > loguearse ahora en máquina Z y poder continuar su trabajo.
>> > > _Usuario B, que estaba cargando datos en máquina X con la
>> > sesión de
>> > > Usuario A, cuando va a guardar esos datos, el sistema le
>> > advierte que
>> > > alguien ha eliminado la sesión y no se pueden guardar los
>> > datos. Ahí
>> > > Leo, es donde se "pierden" los datos....no pueden guardarse
>> > en
>> > > realidad, porque sólo permito una sola sesión por usuario.
>> > >
>> > >
>> > > Los datos que no se puedan guardar, no es nada grave, creo
>> > que es sólo
>> > > una molestia de tener que cargarlos otra vez, nada más. La
>> > idea es que
>> > > el sistema sea lo más amigable posible, pero bueno, si no
>> > respetan las
>> > > sesiones, creo que mucho no puedo hacer.
>> > >
>> > >
>> > > Ésto es lo que he implementado luego de investigar bastante
>> > sobre el
>> > > tema, pero no terminando de entender el tema de las cookies
>> > y
>> > > sesiones, y menos ahora que está fallando. Lo que vimos en
>> > clase fue
>> > > algo básico, lo entiendo, y me sirvió como base, como te
>> > decía al
>> > > principio, pero para implementar algo más completo, es ésto
>> > lo que me
>> > > salió.
>> > >
>> > > Si tenés tiempo, te paso el script de autenticación que
>> > escribí.
>> > >
>> > >
>> > > Bueno, gracias, saludos !
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > El 15 de octubre de 2014, 17:10, Leonardo Tadei - Pegasus
>> > Tech Supply
>> > > <leonardot en pegasusnet.com.ar> escribió:
>> > > Hola Ariel,
>> > >
>> > > y en qué parte de todo esto estás trabado??
>> > >
>> > > Buscaste clases que se encarguen de AAA por
>> > ejemplo en
>> > > www.phpclasses.org ? No recuerdo haberme cruzado con
>> > ninguna
>> > > que te deje
>> > > logueado aunque cierres el navegador, pero sí que
>> > configuran
>> > > como
>> > > parámetro la cantidad de minutos que querés que dure
>> > la
>> > > sesión.
>> > >
>> > > Por otra parte, no sé si es buena idea que
>> > los login
>> > > duren mucho
>> > > después de demasiada inactividad... pero todo
>> > depende de qué
>> > > tan
>> > > importantes sean los datos a los que se acceden.
>> > >
>> > > Una autentificación tipo .htaccess por
>> > ejemplo no se
>> > > desloguea nunca
>> > > (salvo que cierres el navegador) y puede combinarse
>> > con un
>> > > perfil de
>> > > usuario más completo vía las variables de entorno
>> > > $_SERVER['PHP_AUTH_USER'] y $_SERVER['PHP_AUTH_PW']
>> > >
>> > > No debe ser sencillo encontrar lo que
>> > buscás, porque
>> > > de hecho todos
>> > > estamos buscando todo lo contrario: echar del
>> > sistema al
>> > > usuario para
>> > > prevenir robos de sesiones.
>> > >
>> > > Me llamó la atención lo de "evitar pérdida
>> > de datos"
>> > > al iniciar sesión
>> > > desde otro equipo. Qué estás guardando en la sesión
>> > que no
>> > > vale la pena
>> > > perder? No debería haber nada ahí que no sea
>> > estrictamente
>> > > volátil...
>> > >
>> > > Saludos!
>> > >
>> > >
>> > > El mié, 15-10-2014 a las 12:05 -0300, Ariel
>> > Fernández
>> > > escribió:
>> > > > Buenas, alguien implementó correctamente y con
>> > éxito algún
>> > > sistema de
>> > > > gestión de sesiones por cookies con verificación
>> > de
>> > > vencimiento,
>> > > > límite de un usuario por sesión y por máquina ?
>> > > >
>> > > >
>> > > > Porque realmente a mí se me ha complicado bastante
>> > y no
>> > > logro
>> > > > encontrar la forma de que funcione como tiene que
>> > ser.
>> > > >
>> > > >
>> > > > Mi código verifica el número de sesión que lo
>> > almaceno en la
>> > > base de
>> > > > datos al iniciar una sesión, y si alguien intenta
>> > ingresar
>> > > con mismos
>> > > > datos desde otra máquina, será alertado y se le
>> > dará la
>> > > opción de
>> > > > finalizar la otra sesión, pero sólo si no la están
>> > > utilizando para
>> > > > evitar posible pérdida de datos. Quisiera permitir
>> > además,
>> > > que se
>> > > > recuerde la sesión durante todo el día o hasta que
>> > hagan
>> > > logout, por
>> > > > más que se haya cerrado el navegador. Y el tema es
>> > que no
>> > > logro volver
>> > > > a cargar la sesión y reutilizarla. Hay tantos
>> > parámetros de
>> > > php que
>> > > > intervienen (como session.cookie_lifetime,
>> > > session.use_cookies,
>> > > > session.gc_maxlifetime, session.gc_probability,
>> > > session.cache_limiter
>> > > > etc etc) que tal vez estoy ocasionando alguna
>> > contrariedad.
>> > > Y tampoco
>> > > > termino de comprender lo de la función
>> > session_id(), la cual
>> > > > supuestamente me permitiría reutilizar la cookie.
>> > > >
>> > > >
>> > > > En fin, si alguien ha logrado algo similar y me
>> > puede dar
>> > > una mano,
>> > > > una pista, orientarme un poco aunque sea... estaré
>> > > agradecido.
>> > > >
>> > > >
>> > > > Saludos
>> > > > Ariel
>> > >
>> > > > _______________________________________________
>> > > > Lista de correo: Php-avanzado
>> > > > Mensajes a la lista:
>> > Php-avanzado en pato2.fi.mdp.edu.ar
>> > > > Administración Web:
>> > >
>> >
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>> > > > Desubscripción:
>> > >
>> > php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>> > >
>> > > --
>> > > Leonardo Tadei
>> > > leonardot en pegasusnet.com.ar
>> > > Web: http://leonardo.tadei.com.ar
>> > > Firma pública:
>> > >
>> > http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>> > >
>> > > _______________________________________________
>> > > Lista de correo: Php-avanzado
>> > > Mensajes a la lista:
>> > Php-avanzado en pato2.fi.mdp.edu.ar
>> > > Administración Web:
>> > >
>> >
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>> > > Desubscripción:
>> > >
>> > php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>> > >
>> > >
>> > > _______________________________________________
>> > > Lista de correo: Php-avanzado
>> > > Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
>> > > Administración Web:
>> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>> > > Desubscripción:
>> > php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>> >
>> > --
>> > Leonardo Tadei
>> > leonardot en pegasusnet.com.ar
>> > Web: http://leonardo.tadei.com.ar
>> > Firma pública:
>> > http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>> >
>> > _______________________________________________
>> > Lista de correo: Php-avanzado
>> > Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
>> > Administración Web:
>> > http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>> > Desubscripción:
>> > php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>> >
>> >
>> >
>> > _______________________________________________
>> > Lista de correo: Php-avanzado
>> > Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
>> > Administración Web:
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>> > Desubscripción:
>> php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>>
>> --
>> Leonardo Tadei
>> leonardot en pegasusnet.com.ar
>> Web: http://leonardo.tadei.com.ar
>> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>>
>> _______________________________________________
>> Lista de correo: Php-avanzado
>> Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
>> Administración Web:
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>> Desubscripción:
>> php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20141028/e03ed543/attachment-0001.html>
Más información sobre la lista de distribución Php-avanzado