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