Problemas com sql injection
Olá pessoal, estou com problemas ao usar a seguinte função:
<?php
function asql($str){
if (!is_numeric($str)) {
$str = get_magic_quotes_gpc() ? stripslashes($str) : $str;
$str = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($str) : mysql_escape_string($str);
}
return $str;
}
?>
Ela não funciona, e ainda por cima se o usuário envia uma aspas simples, é gravada no banco de dados sem a barra invertida...
Exemplo:
Funciona e mostra a barra invertida:
<?php
$Palavra = asql($_POST['palavra']);
echo $Palavra;
?>
Não Funciona, não mostra a barra invertida:
<?php
$Qr = mysql_query("INSERT INTO tabela (palavra) VALUES ('$Palavra')") or die(mysql_error());
if(Qr){
$CadastroOk = true;
}else{
mes('Ocorreu um erro no cadastro da palavra, informe ao administrador.');
}
?>
Esse não funciona eu imagino que seja pela ordem de execução entre o javascript e o php, não mostra a barra invertida:
<?php
function alerta($mensagem){
echo '<script type="text/javascript"> alert("'.$mensagem.'"); </script>';
}
$Palavra = asql($_POST['palavra']);
alerta($Palavra);
?>
Alguém pode me explicar o que está acontecendo?
Att.
Discussão (3)
Carregando comentários...