Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/05/2008, 08:06
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Funcion Anti-Sql-Injection

Justamente, te lo ha añadido a la base de datos en vez de ejecutarlo
Al momento de generar la consulta, se escaparon y se consideraron caracteres normales.

Tu consulta probablemente haya sido ejecutada como

INSERT .......
VALUES(......, 'Probando: SELECT WHERE \' OR AND \"()'

Con los caracteres neutralizados. Pero eso no implica que esa es la forma en la que serán guardados, una vez que la cadena se procesa las \ se eliminan porque ya cumplieron su función de protección. Por eso la cadena se guarda tal cual se escribió.

Si no hubiera funcionado la función, habrías tenido un error de SQL al ejecutar la consulta.

A propósito, no entiendo el por qué de hacer doble trabajo si las comillas mágicas están activadas.
Creo que sería lo mismo y más eficiente hacer

Código PHP:
<?php
//para evitar sql injection
function sql_quote($valor) {
    if(
get_magic_quotes_gpc()) {
        return 
$valor;
    }

    
//comprueba si existe la función 
    
if(function_exists("mysql_real_escape_string")) {
        
$valor mysql_real_escape_string($valor);
    }
    
//para las versiones < 4.3.0 de php usamos addslashes 
    
else {
        
$valor addslashes($valor);
    }
    return 
$valor;
}

Saludos.