如何读取GET URL参数?

问题描述 投票:0回答:7

我试图在 PHP 中将 URL 作为 URL 参数传递,但是当我尝试获取此参数时,我什么也没得到

我使用以下 URL 形式:

http://localhost/dispatch.php?link=www.google.com
php url get query-string
7个回答
359
投票

$_GET
不是一个函数或语言结构——它只是一个变量(一个数组)。尝试:

<?php
echo $_GET['link'];

特别是,它是一个 superglobal:一个由 PHP 填充的内置变量,可在所有范围内使用(您可以在没有 global 关键字的函数内部使用它)。

由于变量可能不存在,您可以(并且应该)确保您的代码不会触发通知:

<?php
if (isset($_GET['link'])) {
    echo $_GET['link'];
} else {
    // Fallback behaviour goes here
}

或者,如果您想跳过手动索引检查并可能添加进一步的验证,您可以使用 filter 扩展:

<?php
echo filter_input(INPUT_GET, 'link', FILTER_SANITIZE_URL);

最后但并非最不重要的一点是,您可以使用 null 合并运算符(自 PHP/7.0 起可用)来处理丢失的参数:

echo $_GET['link'] ?? 'Fallback value';

31
投票
<?php
    echo $_GET['link'];
?>

<?php
    echo $_REQUEST['link'];
?>

工作...


25
投票

使用这个:

$parameter = $_SERVER['QUERY_STRING'];
echo $parameter;

或者只是使用:

$parameter = $_GET['link'];
echo $parameter ;

21
投票

为了确保您始终处于安全状态,而不会插入各种不需要的代码,请使用过滤器:

echo filter_input(INPUT_GET,"link",FILTER_SANITIZE_STRING);

更多阅读php.net 函数filter_input,或查看不同过滤器的描述


11
投票

接受的答案很好。但如果你有这样的场景:

http://www.mydomain.me/index.php?state=California.php#Berkeley

您可以将命名锚点视为查询字符串,如下所示:

http://www.mydomain.me/index.php?state=California.php&city=Berkeley

然后,像这样访问它:

$Url = $_GET['state']."#".$_GET['city'];

5
投票

我没有得到任何

$_GET["..."]
(例如
print_r($_GET)
给出了一个空数组),但
$_SERVER['REQUEST_URI']
显示应该有东西。最后发现我只是进入了网页,因为我的 .htaccess 将其重定向到那里(我的 404 处理程序是同一个 .php 文件,并且我在测试时在浏览器中犯了一个拼写错误)。

只要更改名称就意味着一旦 404 重定向没有启动,相同的 php 代码就可以工作!

所以有办法

$_GET
即使php代码可能是正确的也不会返回任何内容。


5
投票
$Query_String  = explode("&", explode("?", $_SERVER['REQUEST_URI'])[1] );
var_dump($Query_String)

数组 ( [ 0] => 链接=www.google.com )

© www.soinside.com 2019 - 2024. All rights reserved.