Foros del Web » Administración de Sistemas » Apache »

Personalizar log extrayendo información recibida por POST

Estas en el tema de Personalizar log extrayendo información recibida por POST en el foro de Apache en Foros del Web. Tengo una aplicación PHP (que no desarrollé yo) que consta de el rellenado de varios formulario y parámetros que afectan el flujo del programa son ...
  #1 (permalink)  
Antiguo 29/01/2010, 18:17
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Pregunta Personalizar log extrayendo información recibida por POST

Tengo una aplicación PHP (que no desarrollé yo) que consta de el rellenado de varios formulario y parámetros que afectan el flujo del programa son pasados como información dentro del propio formulario.

Se puede resumir a que funciona a algo como esto:
Código PHP:
Ver original
  1. <?php
  2. $accion = (empty($_POST)) ? 'capturarNombre' : $_POST['accion'];
  3.  
  4.  
  5. switch ($accion) {
  6.     case 'capturarNombre':
  7.         $capturar = primerFormulario();
  8.         $accion   = 'capturarApellido';
  9.         break;
  10.     case 'capturarApellido':
  11.         $capturar = segundoFormulario();
  12.         $accion   = 'guardar';
  13.         break;
  14.     case 'guardar';
  15.         $capturar = guardar();
  16.         $accion   = 'capturarNombre';
  17.         break;
  18. }
  19. ?>
  20. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  21.   <?php echo $capturar; ?><br />
  22.   <input type="submit" value="Enviar" />
  23.   <input type="hidden" name="accion" value="<?php echo $accion; ?>" />
  24. </form>
  25.  
  26. <?php
  27.  
  28. function primerFormulario()
  29. {
  30.     $formulario = <<<HTML
  31.   Nombre: <input type="nombre" value="" />
  32. HTML;
  33.  
  34.     return $formulario;
  35. }
  36.  
  37. function segundoFormulario()
  38. {
  39.     $formulario = <<<HTML
  40.   Apellido: <input type="apellido" value="" />
  41. HTML;
  42.  
  43.     return $formulario;
  44. }
  45.  
  46. function guardar()
  47. {
  48.     // Código
  49.     $mensaje = 'Registro Guardado';
  50.  
  51.     return $mensaje;
  52. }

... y eso es algo muy simplificado

Como la información es enviada por POST, en mi log de Apache veo la petición siempre hacia la misma URL. No puedo ver en qué punto está el usuario.

Mi pregunta es: ¿habrá manera de mostrar solo la parte que me interesa de toda la información enviada por POST?. En este caso, ver en mi log solo el valor del campo oculto "accion" sin nada más.

Ya hice la respectiva búsqueda en Google y revisé la documentación de Apache, pero no encuentro --posiblemente porque no sepa buscar-- algo como lo que necesito.

Modificar la aplicación es impensable, pero necesito monitorear los tiempos en que son servidas las diferentes pantallas (en producción). Cualquier ayuda o sugerencia es agradecida.
__________________
I ♥ The Music!
  #2 (permalink)  
Antiguo 01/02/2010, 05:09
Avatar de sysdebian  
Fecha de Ingreso: octubre-2008
Mensajes: 196
Antigüedad: 16 años, 2 meses
Puntos: 8
Respuesta: Personalizar log extrayendo información recibida por POST

Hola Maturano.

En el caso de POST, apache solo te dirá que es eso, un "POST".
En los logs de apache no hayarás la solución que buscas, tal vez te sea mas útil un sniffer en este caso (tcpdump?), o bien, meter tiempos en tu código y que los vaya registrando. Tampoco he entendido muy bien lo que intentas conseguir.

Un saludo.
__________________
Artigoo: Gestor de contenido online.
  #3 (permalink)  
Antiguo 01/02/2010, 21:49
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: Personalizar log extrayendo información recibida por POST

Cita:
Iniciado por sysdebian Ver Mensaje
(...) meter tiempos en tu código y que los vaya registrando. Tampoco he entendido muy bien lo que intentas conseguir.
Editar código es lo que veo poco eficiente.

Son decenas de scripts que trabajan de manera independiente, aunque lo hacen de la misma manera. Así, el código que dejé se repite una y otra vez en varios archivos; no hay un punto de entrada en común, tendría que hacer varias ediciones. Buscando la solución más simple, volteo a ver a Apache.

Como dije, no es una aplicación que haya realizado yo, pero me toca mantenerla. Mi objetivo es simplemente monitorear cómo se comporta. Ahora quiero ver qué tiempo se tarda en servir las diferentes pantallas, pero no tengo modo de diferenciar qué pantalla se está sirviendo, porque es el mismo archivo, quien diferencía el comportamiento es un parámetro enviado por POST. Lo que intento hacer es simplemente capturar ese parámetro.

Por lo que he visto, parece que solo instalando el módulo de Apache mod_security se puede hacer lo que quiero... sin embargo, justo ahora se me ocurrió que puedo inyectar un script PHP al principio del archivo a servir, tengo entendido eso sí es una configuración general de Apache (sin instalar nada).

Gracias por tu sugerencia. Lo del sniffer sí me funcionaría pero instalar paquetes externos con su manejo propio .... Creo ahora probaré lo de inyectar el archivo, me parece más simple.

De nuevo, cualquier comentario es agradecido.
__________________
I ♥ The Music!

Etiquetas: log, personalizar, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:58.