&安培;在URL搞乱$ _GET变量

时间:2017-07-07 11:25:49

标签: php

我们从客户端系统获取&而不是&的网址:somedomain.com?param1=test&param2=test2

我希望获得$_GET['param1']$_GET['param2']。相反,我得到$_GET['amp;param1']$_GET['amp;param2']

我是否将其修改为.htaccess或PHP中的重写规则?

更新:

临时解决方法是执行以下操作,但它看起来很笨拙:

foreach ($_GET AS $key => $value)
{
    $param = str_replace('amp;', '', $key);
    $_GET[$param] = $value;
    unset($_GET[$key]);
}

2 个答案:

答案 0 :(得分:0)

将字符?&转换为某些代币,例如:

使用?

__Q__str_replace('?', '__Q__', $toUrl) 使用&

__AND__str_replace('&', '__AND__', $toUrl)

并将此数据传递给网址。

从url获取此数据时,请将其解码回来。

str_replace('__Q__', '?', $fromUrl)

str_replace('__AND__', '&', $fromUrl)

虽然很棘手,但确实有效。

答案 1 :(得分:-1)

您似乎在HTML中定义了“somedomain.com?param1=test&param2=test2”。因此HTML正在将&转换为&引用。

只需尝试将&代替&,例如:somedomain.com?param1=test&param2=test2