嘿所有,我创建了一个文本框,通过从数据库中获取内容来自动填充输入,现在它的工作方式如下:
<script type="text/javascript">
$().ready(function() {
$("#food").autocomplete("get_course_list.php", {
width: 260,
cacheLength: 10,
matchContains: false,
//mustMatch: true,
//minChars: 0,
//multiple: true,
//highlight: false,
//multipleSeparator: ",",
selectFirst: true
});
});
</script>
,这在.php文件中:
<?php
require_once "config2.php";
$q = strtolower($_GET["q"]);
if (!$q) return;
$sql = "select DISTINCT voedsel as voed from voedingswaarden where voedsel LIKE '%$q%'";
$rsd = mysql_query($sql);
while($rs = mysql_fetch_array($rsd)) {
$cname = $rs['voed'];
echo "$cname\n";
}
?>
但现在我读到了sql注入等,所以我想用mysql_real_escape_string()来保护我的php脚本。但我似乎无法让它发挥作用。任何想法如何在我的.php文件中实现这个,如果这是足够的保护?
答案 0 :(得分:1)
$q = strtolower($_GET["q"]);
变为
$q = mysql_real_escape_string(strtolower($_GET["q"]));
必须建立与数据库的连接,并且必须只有一个链接,否则你的mysql_query将无法正常工作。
代码不是很优雅,但它会起作用。
你可能想要改变它:
if (!$q) return;
到
if (strlen($q) == 0) return;
答案 1 :(得分:0)
之前我已经说过了,但我认为mysql_real_escape_string()
应该被取消,你应该使用PDO代替。
“PDO - PHP数据对象 - 是一个 数据库访问层提供 统一访问多个方法 数据库“。
PDO是与数据库通信的新改进方式。 PDO准备了使您的网站更快/更安全的声明,因为:
准备好的声明是预编译的 可以执行的SQL语句 多次通过发送 数据到服务器。它有补充 自动制作的优点 占位符中使用的数据安全 来自SQL注入攻击。