0

我有一个搜索表格。我使用以下行来获取值。返回时,将加号替换为空格,删除单/双引号后的字母。我想让用户搜索他们想要的关键字。我怎样才能让这些字母显示?

$title = trim(filter_input(INPUT_GET, 'title', FILTER_SANITIZE_SPECIAL_CHARS));

当我用 GET 发送时。

header("Location:http://site.org/search/?title=$title");

我尝试使用 urlencode() 并适用于加号,但它不适用于引号。例如 c"s 将返回 c"s。

谢谢。

4

3 回答 3

1

这些是与它们的外观相对应的特殊字符,例如GET请求中的加号对应于空格。

请看这个链接

您必须在重定向之前替换这些字符。您可以使用urlencode.

于 2012-12-07T17:05:10.917 回答
0

来自 FILTER_SANITIZE_SPECIAL_CHARS 的手册

HTML 转义 '"<>& 和 ASCII 值小于 32 的字符,可选择剥离或编码其他特殊字符。

如果您尝试的字符的 ascii 值低于 32,您可能需要走不同的路线。

于 2012-12-07T17:05:55.143 回答
0

您需要为要输出到的媒体对数据进行编码/转义:

  • 用于url_encode通过 url 发送变量;
  • 使用带有绑定变量的准备好的语句来查询数据库,这样您就可以安全地避免 sql 注入,并且您可以在数据库中搜索带引号的文本;
  • 用于htmlspecialchars将结果输出到 html 或类似的东西json_encode将其发送到 javascript。
于 2012-12-07T18:40:53.050 回答