可能重复:
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。谢谢。
答案 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']) . "'");
你应该没事。
如果在服务器配置中启用魔术引号,则禁用魔术引号!