Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP从地址栏检索完整的URL?_Php - Fatal编程技术网

如何使用PHP从地址栏检索完整的URL?

如何使用PHP从地址栏检索完整的URL?,php,Php,可能重复: 我使用这个函数,但它并不总是工作。有人能给个提示吗 function sofa_get_uri() { $host = $_SERVER['SERVER_NAME']; $self = $_SERVER["REQUEST_URI"]; $query = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null; $ref = !empty($query) ? "http://

可能重复:

我使用这个函数,但它并不总是工作。有人能给个提示吗

function sofa_get_uri() {
    $host = $_SERVER['SERVER_NAME'];
    $self = $_SERVER["REQUEST_URI"];
    $query = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null;
    $ref = !empty($query) ? "http://$host$self?$query" : "http://$host$self";
    return $ref;
}
我想检索地址栏中的链接(确切地说),以便在用户注销时使用它将其引用回来。URL不同:

http://domain.com/sample/address/?arg=bla

http://domain.com/?show=bla&act=bla&view=bla

http://domain.com/nice/permalinks/setup
但我不能得到一个在所有情况下都能工作的函数,并给我真正的推荐人


请提示。

您可以使用上面的函数检索URL,直到获取参数。 所以您有类似字符串='localhost/site/tmp'(示例)。 在这之后,如果无法获得任何其他工作,您可以循环获取参数。 在字符串末尾手动添加“?”

$str = 'localhost/site/tmp/?'
foreach ($_GET as $key => $value) {
    $str .= $key.'='.$value.'&';
}
substr_replace($str, "", -1);
echo$str; 最后,您将删除最后一个符号,该符号为“&”,不需要。

这个如何

function getAddress() {
    $protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
    return $protocol.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}

echo getAddress();

这段代码工作正常吗?输出代码i的localhost/site/tmp/?我想,它必须工作正常,尽管我还没有尝试过。输出将是:localhost/site/tmp/?get1=val1&get2=val2$str必须从$\u服务器的主函数之一获取。并且将添加所有GET参数。
$protocol
中的条件语句应该是
isset($\u SERVER['HTTPS'])===true
。请注意:这是一个快速而肮脏的解决方案,但在大多数情况下都有效。这种方法包含两个值得考虑的方面。HTTPS和HTTP_主机不是标准的,可能会被忽略或配置错误。HTTP_主机可能为空或包含任何字符串数据(+可能使用请求头中的主机进行“客户端黑客攻击”)。最佳做法是使用多个检查(服务器\协议和请求\方案以及HTTPS;服务器\名称比HTTP \主机更可靠,但也可能配置错误)。归根结底,这个函数大部分时间都在工作,但它不是通用的、可靠的解决方案。在AJAX请求的情况下,请求URI可能与地址栏中的请求URI不同。