如何使用htaccess将search []重写为其他内容

时间:2010-01-10 21:58:28

标签: .htaccess redirect

我用get方法创建了一个搜索表单。但是当网址看起来像 search.php?search [] 搜索?search [] (mod_rewrite)时,我得到一个sql fattal错误。它正在传递一个数组,我想避免这个问题。

我的问题是如何将一个人从该网址重定向到search.php

1 个答案:

答案 0 :(得分:4)

听起来好像是直接将?search[]查询字符串变量传递给SQL。 mod_rewrite不会为您解决此问题...如果我决定使用http://www.yoursite.com/search.php?search=;DROP TABLE users;调用您的网页该怎么办?您根本无法使用mod_rewrite来预测用户可以提出的所有不良输入。

您的代码需要进行输入验证和清理。 您必须假设脚本从用户收到的所有内容都是恶意且危险的。这包括$_GET$_POST$_COOKIE中的所有数据。

这里正确的解决方案是检查$_GET['search']是否是传递给SQL的有效值。类似的东西:

if (is_string($_GET['search']) && ! empty($_GET['search']) {
    //escape the input properly using your database-specific method, e.g.:
    $searchParam = mysql_real_escape_string($_GET['search']);
    //run your query with the escaped data
}

至少,这将确保您传入的搜索变量不是空字符串。