Para mi la mejor forma de evitar esto y si las funciones agregan o no una barra ... se me ocurre preguntar si los resultados que encontro son iguales a lo que habia en la caja de texto, caso contrario, no le permito el acceso, si vos me pones ' OR 1 = '1 no importa, vos si queres podes escribir una subconsulta, que nunca va a poder acceder, repito, ya que cuando termino de hacer la consulta, pregunto si los valores que encontre son los mismos que venian del FORM .. es simple... con eso no tengo problema ..saludos ...
codigo de ejemplo:
Código PHP:
if ($_POST["usuario"]!="" && $_POST["clave"]!=""){
$usuario = $_POST["usuario"];
$clave = $_POST["clave"];
$clave = md5($clave);
$sql = "SELECT * FROM usuarios where usuario='$usuario' and clave='$clave'";
$res = mysql_query($sql) or die("Error en la consult SQL: " . mysql_error());
if(mysql_num_rows($res) > 0){
list($usr,$pwd) = mysql_fetch_array($res)
if($usr == $usuario and $pwd == $clave){
//session_start();
$_SESSION["autentificado"]= "SI";
print "<meta http-equiv=Refresh content=\"3 ; url=panel.php\">";
}else{
echo "El usuario o clave es incorrecta";
}
}else{
print "<meta http-equiv=Refresh content=\"3 ; url=index.php?errorusuario=si\">";
}
}
Asi evitaria de que inyecten codigo SQL ... saludos