Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/09/2010, 16:30
Avatar de Sourcegeek
Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 7 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!