【发布时间】:2014-02-11 07:29:25
【问题描述】:
我有一个带有代码的简单搜索页面:
$keywords = str_replace(' ','%',$_POST['keywords']);
if(isset($_POST['search']) && !empty($keywords)) {
$stmt = $pdo->prepare("SELECT ... WHERE `tags` LIKE ? OR `tags` LIKE ? OR `tags` LIKE ?");
$stmt->execute(array("$keywords %", "% $keywords %", "% $keywords"));
foreach($stmt as $row){
echo ...;
}
}
如何尽可能地保护这个页面?问题包括:对 PDO 使用 mysql_real_escape_string 和 stripslashes 是否正确,或者还有其他类似的东西?
ps。目前我只使用 include('../dbconfig.php') 将 dbconfig 上移一级并从 public_html 文件夹中移出
【问题讨论】:
-
“对 PDO 使用 mysql_real_escape_string 和 stripslashes 是正确的还是有其他类似的东西?” - 你还没有理解准备好的语句 做什么我>。它们分别将查询和数据发送到 DBMS,因此不需要任何形式的额外转义。
-
准备足够保护。如果您想转义可能在
$_POST['keywords']中的%字符,也许您必须分解关键字并将其与$pdo->quote重新连接