Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/12/2010, 16:49
August
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 8 meses
Puntos: 10
Respuesta: Class Anti-XSS, Anti SQL Injection

Código PHP:
Ver original
  1. class seguridad{
  2.  
  3.     function limpiar($value){
  4.         $value=preg_replace('[^A-Za-z0-9_]','',$value);
  5.         if (get_magic_quotes_gpc()){
  6.             $value = stripslashes($value);
  7.         }
  8.         return $value;
  9.     }
  10.     function recursivo($matriz){
  11.         if (is_array($matriz)){  
  12.             foreach($matriz as $key=>$value){
  13.                 if (is_array($value)){  
  14.                     $this->recursivo($value);
  15.                 }else{  
  16.                     $value=$this->limpiar($value);        
  17.                 }    
  18.             }
  19.  
  20.         }else{
  21.             $value=$this->limpiar($matriz);
  22.         }
  23.         return $value;
  24.     }
  25.    
  26.     public function printf_array($elementosql){
  27.         $sqlfiltrado=$this->recursivo(array_shift($elementosql));
  28.         return vprintf($sqlfiltrado,$elementosql);
  29.     }
  30. }
  31.  
  32. $consulta[0]="UPDATE `usuarios` SET `intentos`='%s',`ja`='%s' WHERE `usuario` = 'a'";
  33. $consulta[1]="valor1?";
  34. $consulta[2]="valor2%/";
  35. echo $seguridad->printf_array($consulta);

Esto no esta funcionando

$value=preg_replace('[^A-Za-z0-9_]','',$value);

Pues esta escribiendome esto


UPDATE `usuarios` SET `intentos`='valor1?',`ja`='valor2%/' WHERE `usuario` = 'a'82

Me muestra signos y no deberia que estoy haciendo mal??

ya quite el mysql_real_escape_string