<div dir="ltr">Sí, comprendo, serían muchas actividades así por tabla.<div>Entonces, voy a estudiar bien tu opción, para sólo registrar procesos relevantes como ABM de entidades, modificación de precios, y esas cosas.</div>
<div><br></div><div>Y con lo otro, ok, no mostrar botones a los que el usuario no tiene acceso.</div><div><br></div><div><br></div><div>Gracias Leo.</div><div>Saludos!</div><div><br></div><div><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">El 2 de febrero de 2014, 15:21, 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>
no, no es generar un log cada vez que se modifica una tabla.<br>
Me estás enumerando una docena de actividades.<br>
Si tu software tiene, por ejemplo, solo 10 tablas, registrar cada<br>
INSERT, UPDATE y DELETE, son 3 actividades por tabla, lo que da 30 tipos<br>
de registros diferentes (10 *3 = 30).<br>
Esto es casi tres veces más esfuerzo que registrar solo la docena de<br>
eventos interesantes!<br>
<br>
Acá, al menos las veces que hubo que ponerle logs a los sistemas,<br>
siempre lo más viable fue hacer como te sugerí en el mail anterior. Una<br>
aplicación típica acá tiene al menos 30 tablas; el enfoque de todo da 90<br>
logs diferentes, pero, a quién le importa registrar si aparece un tipo<br>
de documento nuevo o una localidad nueva? En la práctica, lo útil es<br>
mucho menos.<br>
<br>
El enlace no me parece útil para tu caso. Registrar a nivel de<br>
operación SQL es útil solo para poder hacer rollback de operaciones (o<br>
ir hacia adelante y hacia atrás en el estado del sistema), pero no te da<br>
ningún dato relevante si no sabés leer SQL.<br>
<br>
Respecto a los menús, siempre es buena idea no mostrar lo que no se<br>
puede hacer. Generalmente no es tan trivial como poner a la vista o no<br>
un menú, ya que una UI decente te permitirá hacer ABM en la misma<br>
pantalla, con lo que el acceso a dicha pantalla tiene que aparecer si<br>
está permitida una de las 3 operaciones, pero si por ejemplo no se puede<br>
agregar, el botón de insertar no aparecerá.<br>
<br>
<br>
El dom, 02-02-2014 a las 03:40 -0200, Ariel Fernández escribió:<br>
<div class="HOEnZb"><div class="h5">> Hola Leo !!!<br>
><br>
><br>
><br>
> Sí, tu orientación está buena, con algo así podría sacar un listado de<br>
> todas las operaciones que se realizaron sobre una entidad y así saber<br>
> en qué momento sucedió determinada cosa y quién fue el ejecutor de la<br>
> cosa.<br>
><br>
><br>
> Y a lo que me refería es a poder guardar cada operación que realiza un<br>
> usuario en el sistema. El sistema sería una aplicación web para unos<br>
> pocos usuarios.<br>
> Te pongo varios ejemplos para explicarme mejor:<br>
> Necesitaría que el sistema guarde en una tabla, cuando un usuario....:<br>
> _da de alta una entidad (por entidad entiéndase<br>
> paciente/cliente/proveedor, etc)<br>
> _da de baja una entidad<br>
> _modifica una entidad<br>
> _realiza una factura o nota de crédito o de débito<br>
> _imputa un pago<br>
> _genera un recibo de pago<br>
> _genera un ajuste de stock<br>
> _carga una observación en una factura<br>
><br>
> _carga mercadería al stock<br>
> _genera una lista de precios<br>
> _modifica un precio<br>
> _etc etc etc<br>
><br>
><br>
> en definitiva, sería registrar cada operación que se realiza con cada<br>
> tabla, no es así? es decir, cada vez que se produce un UPDATE o un<br>
> INSERT o un DELETE en alguna tabla, que el sistema guarde qué usuario<br>
> lo realizó, la fecha y la hora.<br>
><br>
><br>
><br>
><br>
> espero que se entienda mejor, no es que necesite todo lo de los<br>
> ejemplos, pero para que te des una mejor idea de lo que pretendía.<br>
><br>
><br>
> No he encontrado mucha información al respecto, sólo un artículo que<br>
> habla de "bitácora" acá:<br>
> <a href="http://tavoberry.com/blog/crear-una-bitacora-en-mysql/" target="_blank">http://tavoberry.com/blog/crear-una-bitacora-en-mysql/</a><br>
><br>
><br>
> Creés que eso que explican ahí puede llegar a ser útil ?<br>
><br>
><br>
><br>
><br>
> Por otra parte, lo de la autentificación con sesiones, para terminar<br>
> de entenderla, lo implementé en el sistemita del jardín, y logré<br>
> comprender el proceso aún más.<br>
> También me gustaría generar menúes condicionales según el nivel de<br>
> acceso que tenga el usuario que se loguea. No sé, por ejemplo,<br>
> Administrador, Operador Avanzado, Operador Básico....algo así. Para<br>
> que, por poner algún ejemplo, sólo el administrador pueda modificar<br>
> precios, o un operador básico sólo pueda sacar listados y facturar, y<br>
> uno avanzado pueda hacer cŕeditos y dar de baja clientes...etc<br>
> Algo así estimo que se implementaría con menúes condicionales, qué te<br>
> parece?<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> El 1 de febrero de 2014, 11:14, Leonardo Tadei - Pegasus Tech Supply<br>
> <<a href="mailto:leonardot@pegasusnet.com.ar">leonardot@pegasusnet.com.ar</a>> escribió:<br>
> Hola Ariel,<br>
><br>
> querés registrar "procesos realizados", pero no sé a<br>
> qué te referís<br>
> exactamente con esto.<br>
><br>
> A nivel de almacenamiento, lo mejor es tener una tabla<br>
> con la acción o<br>
> proceso (id, nombre) y otra que sea el registro de actividades<br>
> (id,<br>
> id_proceso, timestamp, nombre de usuario). No es complicado<br>
> agregarle IP<br>
> de conexión si el dato vale la pena.<br>
><br>
> Esto después te permite filtrar fácilmente por proceso<br>
> para buscar algo<br>
> específico.<br>
><br>
> Para la implementación, te hacés una función "log",<br>
> que podría ponerse<br>
> en un include_once() en el script que hace la autentificación,<br>
> que si<br>
> está bien hecha, estará al principio de todos los scripts del<br>
> sistema,<br>
> con lo que la tenés disponible en todas partes.<br>
><br>
> Para usarla, en la parte del código que realiza cada<br>
> proceso, la<br>
> invocás:<br>
><br>
> log($proceso, $usuario);<br>
><br>
> Lo demás no hace falta porque está disponible desde<br>
> cualquier contexto<br>
> y será parte de la implementación de log()<br>
><br>
> Hay veces en los que además de esto, vale la pena<br>
> registrar un texto<br>
> para dar detalles del proceso.<br>
><br>
> Hay veces en las que tenés que registrar referencias a<br>
> cosas del<br>
> sistema, como Productos o Clientes. En este caso vale la pena<br>
> agregar<br>
> los ID de estas cosas y sus nombres, para poder filtrar por un<br>
> cliente o<br>
> por un producto específico y ver que le pasó.<br>
><br>
> Espero haberte orientado.<br>
><br>
><br>
> El vie, 31-01-2014 a las 14:07 -0200, Ariel Fernández<br>
> escribió:<br>
> > Hola gente, como andan?<br>
> ><br>
> > Una consulta para Leo si anda por ahí...<br>
> > Quería saber como implementar un log o registro de<br>
> actividades de<br>
> > usuarios. Es decir, una aplicación es utilizada por varios<br>
> usuarios, y<br>
> > quisiera que quede registrado en algún lado, fecha, hora,<br>
> procesos<br>
> > realizados, etc etc. Cómo se puede implementar algo así de<br>
> una manera<br>
> > conveniente ?<br>
> ><br>
> > Desde ya, gracias.<br>
> ><br>
> > Saludos!<br>
><br>
><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>
> 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></div></div></blockquote></div><br></div>