在包含另一个 URL 的 URL 中解析 GET 请求参数

2022-08-31 00:09:50

这是网址:

http://localhost/test.php?id=http://google.com/?var=234&key=234

而且我无法获得完整的$_GET['id']或$_REQUEST['d']。

<?php
print_r($_REQUEST['id']); 
//And this is the output http://google.com/?var=234
//the **&key=234** ain't show 
?>

答案 1
$get_url = "http://google.com/?var=234&key=234";
$my_url = "http://localhost/test.php?id=" . urlencode($get_url);

$my_url 输出:

http://localhost/test.php?id=http%3A%2F%2Fgoogle.com%2F%3Fvar%3D234%26key%3D234

因此,现在您可以使用 或 (解码) 获取此值。$_GET['id']$_REQUEST['id']

echo urldecode($_GET["id"]);

输出

http://google.com/?var=234&key=234

获取每个 GET 参数:

foreach ($_GET as $key=>$value) {
  echo "$key = " . urldecode($value) . "<br />\n";
  }

$key是 GET 键,并且是 的 GET 值。$value$key

或者,您可以使用替代解决方案来获取 GET 参数数组

$get_parameters = array();
if (isset($_SERVER['QUERY_STRING'])) {
  $pairs = explode('&', $_SERVER['QUERY_STRING']);
  foreach($pairs as $pair) {
    $part = explode('=', $pair);
    $get_parameters[$part[0]] = sizeof($part)>1 ? urldecode($part[1]) : "";
    }
  }

$get_parameters与网址解码相同。$_GET


答案 2

创建网址时,用网址编码它们

$val=urlencode('http://google.com/?var=234&key=234')

<a href="http://localhost/test.php?id=<?php echo $val ?>">Click here</a>

并在获取时使用urldecode解码它


推荐