PHP url 解码无效

PHP url decode do not work

我有一个 URL,其中参数 pass 是 urlencoded:

http://ipaddress/userandpass.php?user=test&pass=145Red#321OK

为了解码这个参数,我尝试使用 urldecode and rawurldecode and utf8_decode(urldecode()) 但没有成功。 我的代码如下所示:

if(isset($_GET["pass"]) && $_GET["pass"] != ""){
$pass=urldecode($_GET["pass"]);
}

您对我如何解决这个问题有什么想法吗?

只需使用

if(!empty($_GET["pass"]))
{
    $pass= $_GET["pass"];
}

PHP - GET & POST Methods

http://www.test.com/index.htm?name1=value1&name2=value2
  • GET 方法生成一个长字符串,出现在您的服务器日志中,在浏览器的位置:框中。
  • GET 方法最多只能发送 1024 个字符。
  • 如果您有密码或其他敏感信息要发送到服务器,切勿使用 GET 方法。
  • GET 不能用于向服务器发送二进制数据,如图像或 word 文档
  • 可以使用QUERY_STRING环境变量访问GET方法发送的数据。
  • PHP提供$_GET关联数组,使用GET方法访问所有发送的信息。

我不确定您是否愿意这样做,但我假设您的密码中可以包含各种字符,包括通常在查询字符串中作为关键元素找到的字符。

尽管您应该首先考虑永远不要在 GET 或 uri 中发送包含敏感数据的参数。

但要回答你的问题: 我会这样做:

$parts = explode('?', $_SERVER['REQUEST_URI']);
array_shift($parts); //we dont want the first bit, only everything after the first questionmark
$qstring = implode('?', $parts);
parse_str($qstring, $parameters);
if (isset($parameters["pass"]) && $parameters["pass"] != "") {
    $pass = urldecode($parameters["pass"]);
}