0

可能重复:
PHP 5.3 自动从表单字符串中转义 $_GET/$_POST?

我有一个无法解决的问题。我的网站上有传递变量的搜索功能。一些 url 变量中可能有撇号。例如:

http://xyz.php?var=that's

我的问题是,当变量通过时,它会添加一个 \ 来转义撇号。然后,当我单击分页按钮时,它将逃避转义添加 \. 有没有办法阻止 url 的转义。它可以很好地返回撇号或只转义一次。

http://xyz.php?var=that's or http://xyz.php?var=that\'s

但是当我分页时它逃脱了逃脱并且

> http://xyz.php?var=that\\\'s

当它逃脱转义添加多个斜杠时,它会破坏我的搜索或不返回任何结果。

有谁知道 php 函数来阻止它转义转义或根本不转义 url。谢谢你。

4

2 回答 2

0

使用 parse_str 时可能会阻止自动添加斜杠?

// Turn off magic_quotes_runtime
if (get_magic_quotes_runtime())
    set_magic_quotes_runtime(0);

// Strip slashes from GET/POST/COOKIE (if magic_quotes_gpc is enabled)
if (get_magic_quotes_gpc())
{
    function stripslashes_array($array)
    {
        return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array);
    }

    $_GET = stripslashes_array($_GET);
    $_POST = stripslashes_array($_POST);
    $_COOKIE = stripslashes_array($_COOKIE);
}

如果您对禁用 magic_quotes 不满意,请参阅stripslashes 。

于 2012-10-20T19:45:35.673 回答
0

要转义 URL 参数,请使用urlencode()(或 urldecore,解码 url)

当您将变量值放入查询中时,您可以使用 mysql_real_escape_string()

<a href="search.php?var=<? echo urlencode("something isn't right");?>">search</a>

mysql_query("SELECT .. WHERE x = '" . mysql_real_escape_string($_GET['var']) . "'");

你应该没事。

禁用魔术引号,如果它们在服务器配置中启用!

于 2012-10-20T20:34:48.447 回答