我有这个简单的搜索引擎代码,但窃取无法阻止我的SQL注入
$sql = mysqli_real_escape_string($searchengine,$sql);
无法正常工作或我使用错了...我做错了什么?
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("searchengine");
$sql = mysql_query("SELECT * FROM searchengine WHERE pagecontent LIKE '%$_GET[term]%' LIMIT 0,$_GET[results]");
while($ser = mysql_fetch_array($sql)) { echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>"; }
?>
答案 0 :(得分:1)
mysqli_real_escape_string
是mysqli
模块的一部分。您正在混合而不是正确使用该功能。
这是你正确的做法:
mysql_connect("localhost", "root", "");
mysql_select_db("searchengine");
$sql = mysql_query(sprintf(
"SELECT * FROM searchengine WHERE pagecontent LIKE '%s' LIMIT 0,%d",
'%'. mysql_real_escape_string($_GET['term']) .'%',
mysql_real_escape_string($_GET['results']))
);
while($ser = mysql_fetch_array($sql)) {
echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>";
}
// don't forget to close connection
mysql_close();
P.S。 mysql_*
已正式弃用。请查看使用PDO
或MySQLi
库。