PHP中的GET URL参数


189

我正在尝试将URL作为php中的url参数传递,但是当我尝试获取此参数时我什么也没收到

我正在使用以下网址形式:

http://localhost/dispatch.php?link=www.google.com

我试图通过它:

$_GET['link'];

但是什么也没回来。问题是什么?


15
显示您的完整代码
-Pekka

3
var_dump了的$_GETPARAM,应该还有
纳夫塔利又名尼尔

1
$_REQUEST['link']工作?还请记住,索引键link对URL中的内容区分大小写。
Dutchie432 2011年

您实际上并没有尝试$_GET但刚好发布了吗?
詹姆斯

对此有什么解决方案?有同样的问题
Ixx 2012年

Answers:


281

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

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

特别是,它是一个超全局变量:一个由PHP填充的内置变量,在所有作用域中都可用(您可以在没有全局变量的函数内部使用它关键字)。

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

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

另外,如果您想跳过手动索引检查并可能添加其他验证,则可以使用过滤器扩展:

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

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

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

14
如果您像我一样对此一无所获,那么您应该知道,“链接”是URL地址中变量的名称!因此,使用$ _GET ['link']; 您需要输入如下网址:localhost /?link = test
Firzen 2014年

我正在使用WAMP localhost,但此解决方案无法正常工作。http://localhost/station?type=2 echo $_GET['type'];null
NineCattoRules

最后我用了parse_str(parse_url($actual_link)['query'], $params);。更多信息stackoverflow.com/a/11480852/4458531
NineCattoRules

您说“ $ _GET不是函数或语言构造,它只是一个变量(数组)”,但是我们不通过索引访问值,而是通过字符串访问值。这更像是字典,而不是数组?
ScottyBlades

1
@ScottyBlades我是在PHP数据结构的上下文中说的。在PHP中,数组是键/值组合的有序列表。这不同于其他语言(例如C或JavaScript)称为“数组”的语言。
阿瓦罗·冈萨雷斯

27

请发布您的代码,

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

要么

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

工作......




10

接受的答案是好的。但是,如果您有这样的情况:

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'];

3

我什么也没得到$_GET["..."](例如print_r($_GET)给了一个空数组)$_SERVER['REQUEST_URI']显示应该有东西。最后,结果证明我只是进入网页,因为我的.htaccess文件将其重定向到那里(我的404处理程序是同一个.php文件,并且在测试时我在浏览器中输入了错字)。

简单地更改名称意味着一旦404重定向不起作用,相同的php代码就可以工作!

因此 $_GET即使php代码可能是正确的,也有方法无法返回任何内容。



0

谁也什么都没得到,我认为他只需要将结果括在html标签中,

像这样:

<html>
<head></head>
<body>
<?php
echo $_GET['link'];
?>
<body>
</html>

5
不,不需要html标记。纯文本由所有浏览器呈现。
MarcoS

-1

正如Alvaro所说,$ _GET不是一个函数,而是一个包含参数的数组,因此您可以使用以下命令从该数组中检索一个元素

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

预期的OP:

www.google.com
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.