现在我有这个表格后期脚本
<?
if(isset($_POST['baslik'])) {
$sql = "INSERT INTO yazilar (baslik, spot, spot_kisa, spot_resim, spot_resim_isim, icerik, kategori, tiklanma, eklemetarihi)
VALUES
('$_POST[baslik]','$_POST[spot]','$_POST[spot_kisa]','$_POST[spot_resim]','$_POST[spot_resim_isim]','$_POST[icerik]','$_POST[kategori]','$_POST[tiklanma]','$_POST[tarih]')";
$sonuc = mysql_query($sql) or die(mysql_error());
if ($sonuc) {
echo ("<p class='msg done'>Yeni icerik basarili bir sekilde eklendi.</p>");
exit;
}
else {
$error = "<p class='msg warning'>Ekleme basarisiz oldu.</p>";
}
}
?>
如何忽略此查询的sql注入?
答案 0 :(得分:8)
使用参数化查询。不幸的是,PHP 4中的mysql扩展不支持这些,但如果您使用的是PHP 5,则可以使用mysqli扩展或PDO代替它们。
有关如何完成此操作的示例,请参阅http://www.php.net/manual/en/mysqli.prepare.php。
答案 1 :(得分:1)
使用参数化查询作为jammycackes建议是可行的方法,但如果由于某种原因无法使用它们,那么您可以使用mysql-real-escape-string
函数来阻止大多数(所有?)危险值。问题是你必须在每个收到的值上使用它,所以你不能使用你在你的例子中使用的简写概念。