Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/05/2010, 17:54
Adell
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años
Puntos: 10
Problema clase mysql

Buenas a todos, estoy desarrollando una clase para tener mas a mano las funciones de mysql, el codigo de la parte que nos concierne es el siguiente

Código PHP:
public function query($sql) {
        
$sql $this->security($sql);
        
$this->consulta mysql_query($sql$this->link);
        
$this->result();
    }
    
    protected function 
result() {
        if(
is_resource($this->consulta)) {
            while (
$this->fila mysql_fetch_array($this->consultaMYSQL_ASSOC)) {
                
$this->salida[] = $this->fila;
            }
        }
    }
    
    public function 
security($string) {
        
$string strip_tags($string);
        
$string htmlentities($stringENT_QUOTES"UTF-8");
        
$string mysql_real_escape_string($string);
        return 
$string;
    } 
el asunto es que al pasarle el metodo de seguridad me hace mal la cadena de la consulta y me falla el query, sin embargo si uso el metodo security por si solo me devuelve una cadena valida, la verdad estoy medio desconcertado

si llamo a la consulta del query de esta forma y con esta cadena

Código PHP:
echo $mysql->query("INSERT INTO staff (nombre) VALUES ('<script>alert();</script>')") or die(mysql_error()); 
me devuelve esto

Código PHP:
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near ''alert();')' at line 1 
sin embargo si paso la cadena por el metodo security

Código PHP:
echo $mysql->security("INSERT INTO staff (nombre) VALUES ('<script>alert();</script>')"); 
me devuelve
Código PHP:
INSERT INTO staff (nombreVALUES ('alert();'
que es una cadena valida....

de antemano gracias
saludos