1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP获取当前页面完整URL

作者:用户 来源:互联网 时间:2017-12-01 15:51:49

页面

PHP获取当前页面完整URL - 摘要: 本文讲的是PHP获取当前页面完整URL,PHP是通过$_SERVER预定义变量获取当前页面完整URL的,$_SERVER是一个包含头信息、路径、文件位置的数组,它是由web服务器创建的,如果你用命令行方式运行PHP,那么$_SERVER完全无效。对$_SERVER数组元素说明:$

PHP是通过$_SERVER预定义变量获取当前页面完整URL的,$_SERVER是一个包含头信息、路径、文件位置的数组,它是由web服务器创建的,如果你用命令行方式运行PHP,那么$_SERVER完全无效。
对$_SERVER数组元素说明:


$_SERVER[ 'PHP_SELF' ] #当前正在执行脚本的文件名,与 document root相关。
$_SERVER[ 'argv' ] #传递给该脚本的参数。
$_SERVER[ 'argc' ] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER[ 'GATEWAY_INTERFACE' ] #服务器使用的 CGI 规范的版本。例如,“CGI/ 1.1 ”。
$_SERVER[ 'SERVER_NAME' ] #当前运行脚本所在服务器主机的名称。
$_SERVER[ 'SERVER_SOFTWARE' ] #服务器标识的字串,在响应请求时的头部中给出。
$_SERVER[ 'SERVER_PROTOCOL' ] #请求页面时通信协议的名称和版本。例如,“HTTP/ 1.0 ”。
$_SERVER[ 'REQUEST_METHOD' ] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER[ 'QUERY_STRING' ] #查询(query)的字符串。
$_SERVER[ 'DOCUMENT_ROOT' ] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER[ 'HTTP_ACCEPT' ] #当前请求的 Accept: 头部的内容。
$_SERVER[ 'HTTP_ACCEPT_CHARSET' ] #当前请求的 Accept-Charset: 头部的内容。例如:“iso- 8859 - 1,*,utf- 8 ”。
$_SERVER[ 'HTTP_ACCEPT_ENCODING' ] #当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。
$_SERVER[ 'HTTP_ACCEPT_LANGUAGE' ]# 当前请求的 Accept-Language: 头部的内容。例如:“en”。
$_SERVER[ 'HTTP_CONNECTION' ] #当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
$_SERVER[ 'HTTP_HOST' ] #当前请求的 Host: 头部的内容。
$_SERVER[ 'HTTP_REFERER' ] #链接到当前页面的前一页面的 URL 地址。
$_SERVER[ 'HTTP_USER_AGENT' ] #当前请求的 User_Agent: 头部的内容。
$_SERVER[ 'HTTPS' ] — 如果通过https访问,则被设为一个非空的值(on),否则返回off
$_SERVER[ 'REMOTE_ADDR' ] #正在浏览当前页面用户的 IP 地址。
$_SERVER[ 'REMOTE_HOST' ] #正在浏览当前页面用户的主机名。
$_SERVER[ 'REMOTE_PORT' ] #用户连接到服务器时所使用的端口。
$_SERVER[ 'SCRIPT_FILENAME' ] #当前执行脚本的绝对路径名。
$_SERVER[ 'SERVER_ADMIN' ] #管理员信息
$_SERVER[ 'SERVER_PORT' ] #服务器所使用的端口
$_SERVER[ 'SERVER_SIGNATURE' ] #包含服务器版本和虚拟主机名的字符串。
$_SERVER[ 'PATH_TRANSLATED' ] #当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER[ 'SCRIPT_NAME' ] #包含当前脚本的路径。这在页面需要指向自己时非常有用。
$_SERVER[ 'REQUEST_URI' ] #访问此页面所需的 URI。
$_SERVER[ 'PHP_AUTH_USER' ] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
$_SERVER[ 'PHP_AUTH_PW' ] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
$_SERVER[ 'AUTH_TYPE' ] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。

注意:SERVER_NAME 和HTTP_HOST的区别(非80端口时HTTP_HOST = SERVER_NAME : SERVER_PORT)
常见的元素也就如上加粗部分,利用它们就可以很容易获取完整的url。
<?php/** *@author mckee *@blog  http://www.phpddt.com  */function get_page_url(){$url = (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') ? 'https://' : 'http://';$url .= $_SERVER['HTTP_HOST'];$url .= isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : urlencode($_SERVER['PHP_SELF']) .'?' .urlencode($_SERVER['QUERY_STRING']);return $url;}echo get_page_url();?>

说明:
$_SERVER
[
'REQUEST_URI'
]只是以apache作为web服务器才有效,如果不存在,应该
$_SERVER
[
'PHP_SELF'
]) .
'?'
.
$_SERVER
[
'QUERY_STRING'
]来获取,当然是用urlencode可以防止恶意url。

PS:如果用javascript获取url就简单多了:
<script>document.write(this.location.href);</script>

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索页面 ,以便于您获取更多的相关知识。

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

开发者常用软件,超百款实用软件一站式提供