Foros del Web » Programando para Internet » PHP »

[Pequeño Aporte] Auto-log de "?" y formularios

Estas en el tema de [Pequeño Aporte] Auto-log de "?" y formularios en el foro de PHP en Foros del Web. Buenas tardes :D Antes que nada les cuento que tengo 13 años (bueno, a 2 meses de los 14 :P) y ya estoy en esto ...
  #1 (permalink)  
Antiguo 17/09/2010, 16:30
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
[Pequeño Aporte] Auto-log de "?" y formularios

Buenas tardes :D
Antes que nada les cuento que tengo 13 años (bueno, a 2 meses de los 14 :P) y ya estoy en esto del mundo del PHP, pero ahora quise aprender un poquito más sobre la OOP (POO) :P
Como voy aprendiendo, se me ocurrió hacer un pequeño aporte e hice un script muy pero muy sencillo..
Qué hace? Simplemente guarda en "log.txt" una serie de datos cuando se accede por ejemplo a pagina.php?lala=lala (por ejemplo)..
Cómo lo hace? Con "$_SERVER['QUERY_STRING']"
Qué otros datos guarda? Guarda la fecha, qué puso después de "?", cómo resultaría la URL y la IP del visitante...
Qué mas hace? Guarda también un log (en un archivo aparte) de lo que se introduzca en algún formulario ^^
Para que todo esto? Asi podemos saber quien intenta "hackear" de cierta forma mediante ?= y podemos saber tambien quien intenta hacernos xss injection
A continuación dejo el código y luego el cómo usarlo;

Código PHP:
Ver original
  1. <?php
  2. class LogHack {
  3.     //Funcion que se auto-ejecute
  4.     public function __construct() {
  5.         //Asignamos variable a CUALQUIER cosa despues de "?" y asignamos variable
  6.         //a la IP que nos visita
  7.         $query_string = $_SERVER['QUERY_STRING'];
  8.         $ip_visitante = $_SERVER['REMOTE_ADDR'];
  9.         //Si $query_string no esta vacia, lo metemos en el log
  10.         if ($query_string) {
  11.             $archivo = 'Fecha: '.date('d').'/'.date('m').'/'.date('Y');
  12.             $archivo.= "\r\n";
  13.             $archivo.= 'Puso: '.$query_string;
  14.             $archivo.= "\r\n";
  15.             $archivo.= 'URL Resultante: '.$_SERVER['REQUEST_URI'];
  16.             $archivo.= "\r\n";
  17.             $archivo.= 'IP: '.$ip_visitante;
  18.             $archivo.= "\r\n\r\n---------------------------------\r\n\r\n";
  19.             //Abrimos el archivo
  20.             $abrirarchivo = fopen("log.txt","a");
  21.             //Grabamos lo necesario
  22.             fwrite($abrirarchivo,$archivo);
  23.             //Cerramos el archivo
  24.             fclose($abrirarchivo);
  25.         }
  26.     }
  27.    
  28.     public function formulario($array) {
  29.         $archivo2 = 'Fecha: '.date('d').'/'.date('m').'/'.date('Y');
  30.         $archivo2.= "\r\n";
  31.         $archivo2.= 'IP: '.$_SERVER['REMOTE_ADDR']."\r\n";
  32.         foreach ($array as $arrayForeach) {
  33.             $archivo2.= 'Campo '.$arrayForeach.': '.$_POST[$arrayForeach]."\r\n";
  34.         }
  35.         $archivo2.= "\r\n\r\n-----------------------------------------\r\n\r\n";
  36.         $abrirarchivo2 = fopen("log_form.txt","a");
  37.         fwrite($abrirarchivo2,$archivo2);
  38.         fclose($abrirarchivo2);
  39.     }
  40. }
  41. ?>

Su uso es muy sencillo, así como lo es el código
Tienes que incluir el archivo que puse arriba en todas las páginas que quieras hacer log de "?" y de los formularios
Después, tienes que iniciar la clase;
Código PHP:
$ejemplo = new LogHack(); 
Luego, en la página de la acción del formulario, tienes que poner lo siguiente;
Código PHP:
$ejemplo->formulario(array('campo1','campo2','campo3')); 
Claro, donde campo1 y eso tienes que poner el nombre de los campos del formulario
Vuelvo a decir que es muy pero muy sencillo, ya que apenas inicio en esto del OOP
Saludos!
  #2 (permalink)  
Antiguo 17/09/2010, 18:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: [Pequeño Aporte] Auto-log de "?" y formularios

Te recomiendo que en el construct solo coloques las variables que vas a usar en la clase, en cierta manera en el construct se forman "las reglas". El trabajo de crear el archivo e insertar debería de estar en otro método. También en vez de usar \r\n puedes usar la constante PHP_EOL para que PHP se encargue de colocar la que va de acuerdo al sistema operativo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 17/09/2010, 21:22
Avatar de De_la_Cuesta_13  
Fecha de Ingreso: abril-2009
Ubicación: Cali, Colombia.
Mensajes: 265
Antigüedad: 15 años, 7 meses
Puntos: 14
Respuesta: [Pequeño Aporte] Auto-log de "?" y formularios

Debes mejorar unas cositas en la clase .
Estupendo que a tu edad ya empiezas a escribir código.
__________________
Sólo quien nunca nada hace, nunca se equivoca.
  #4 (permalink)  
Antiguo 17/09/2010, 22:58
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: [Pequeño Aporte] Auto-log de "?" y formularios

Cita:
Iniciado por De_la_Cuesta_13 Ver Mensaje
Debes mejorar unas cositas en la clase .
Estupendo que a tu edad ya empiezas a escribir código.

Si, me imaginaba que tenia muchas cosas por mejorar :P
Esa es como la base del codigo, y me parecio interesante compartirla con ustedes

Gracias por comentar ^^
  #5 (permalink)  
Antiguo 21/03/2012, 11:26
 
Fecha de Ingreso: junio-2010
Ubicación: Mendoza
Mensajes: 5
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: [Pequeño Aporte] Auto-log de "?" y formularios

Exelente. amigo :)

Gracias por compartir ;)

Saludos.

Etiquetas: aportes, formulario
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:16.