Url变量w / Apostrophe

时间:2012-10-20 19:39:46

标签: php url escaping

  

可能重复:
  PHP 5.3 automatically escapes $_GET/$_POST from form strings?

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

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

我的问题是,当变量通过时,它会添加一个\来转义撇号。然后当我点击一个分页按钮时,它将逃脱添加\的转义。有没有办法阻止网址的转义。它工作正常,它返回撇号或只逃脱一次。

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

但是当我分页时,它会逃脱逃脱和

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

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

有没有人知道php函数来阻止它逃脱转义或者根本没有转义url。谢谢。

2 个答案:

答案 0 :(得分:0)

可能是prevent automatic add slashes while using 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

答案 1 :(得分:0)

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

将变量值放入查询中时,使用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']) . "'");

你应该没事。

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