我试图在php中传递一个URL作为URL参数,但当我试图获得这个参数时,我什么都没有得到
我使用下面的url形式:
http://localhost/dispatch.php?link=www.google.com
我正试着让它通过:
$_GET['link'];
但是没有回音。有什么问题吗?
我试图在php中传递一个URL作为URL参数,但当我试图获得这个参数时,我什么都没有得到
我使用下面的url形式:
http://localhost/dispatch.php?link=www.google.com
我正试着让它通过:
$_GET['link'];
但是没有回音。有什么问题吗?
请张贴你的代码,
<?php
echo $_GET['link'];
?>
or
<?php
echo $_REQUEST['link'];
?>
做的工作……
$_GET不是函数或语言构造——它只是一个变量(数组)。试一试:
<?php
echo $_GET['link'];
特别是,它是一个超全局变量:一个由PHP填充的内置变量,在所有作用域中都可用(可以在没有global关键字的函数中使用它)。
因为变量可能不存在,你可以(也应该)确保你的代码不会触发通知:
<?php
if (isset($_GET['link'])) {
echo $_GET['link'];
} else {
// Fallback behaviour goes here
}
或者,如果你想跳过手动索引检查,并可能添加进一步的验证,你可以使用过滤器扩展:
<?php
echo filter_input(INPUT_GET, 'link', FILTER_SANITIZE_URL);
最后但并非最不重要的是,你可以使用空合并操作符(自PHP/7.0以来可用)来处理缺失的参数:
echo $_GET['link'] ?? 'Fallback value';
为了确保你总是在安全的一边,没有各种不必要的代码插入使用FILTERS:
echo filter_input(INPUT_GET,"link",FILTER_SANITIZE_STRING);
更多关于php.net函数filter_input的阅读,或者查看不同过滤器的描述
我没有得到任何$_GET["…"](例如print_r($_GET)给出一个空数组)然而$_SERVER['REQUEST_URI']显示东西应该在那里。最后,我发现我只能访问网页,因为我的.htaccess重定向到那里(我的404处理程序是同一个.php文件,并且我在测试时在浏览器中犯了一个拼写错误)。
简单地更改名称意味着在404重定向不起作用时相同的php代码可以正常工作!
因此,即使php代码可能是正确的,$_GET也有可能不返回任何内容。
用这个:
$parameter = $_SERVER['QUERY_STRING'];
echo $parameter;
或者直接用:
$parameter = $_GET['link'];
echo $parameter ;
$Query_String = explode("&", explode("?", $_SERVER['REQUEST_URI'])[1] );
var_dump($Query_String)
数组 ( [0] => link=www.google.com )
公认的答案是好的。但如果你有这样一个场景:
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'];