$URL['PHP_SELF'] = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : (isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : $_SERVER['ORIG_PATH_INFO']);   //当前页面名称

$URL['DOMAIN'] = $_SERVER['SERVER_NAME'];  //域名(主机名)

$URL['QUERY_STRING'] = $_SERVER['QUERY_STRING'];   //URL 参数

$URL['URI'] = $URL['PHP_SELF'].($URL['QUERY_STRING'] ? "?".$URL['QUERY_STRING'] : "");

$URL['URL'] = "http://".$URL['DOMAIN'].$URL['PHP_SELF'].($URL['QUERY_STRING'] ? "?".$URL['QUERY_STRING'] : ""); //完整URL地址

function getIps() //获取用户IP
{
 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown'))
 {
  $IP = getenv('HTTP_CLIENT_IP');
 } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
  $IP = getenv('HTTP_X_FORWARDED_FOR');
 } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
  $IP = getenv('REMOTE_ADDR');
 } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
  $IP = $_SERVER['REMOTE_ADDR'];
 }
 return $IP ? $IP : "unknow";
}

 我们今天向大家介绍的是有关PHP获取当前url的函数的具体方法,通过对这个函数方法的了解,进一步加深我们对PHP语言的认识,提高我们的学习水平。

  PHP 5.0构造函数的实例讲解 PHP获取当前url的具体方法如下:

  $url_this = "'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];;

  echo $url_this;

  则显示 :http://localhost/drupaluser/index.php

  服务器变量:$_SERVER

  注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_SERVER_VARS。

  $_SERVER 是一个包含诸如头部(headers)、路径(paths)和脚本位置(scrīpt locations)的数组。数组的实体由 web 服务器创建。不能保证所有的服务器都能产生所有的信息;服务器可能忽略了一些信息,或者产生了一些未在下面列出的新的信息。这意味着,大量的这些变量在 CGI 1.1 specification 中说明,所以您应该仔细研究它。

  这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中您不需要使用 global $_SERVER; 访问它,就如同使用 $HTTP_SERVER_VARS 一样。

  $HTTP_SERVER_VARS 包含着同样的信息,但是不是一个自动全局变量。(注意: $HTTP_SERVER_VARS 和 $_SERVER 是不同的变量,PHP 处理它们的方式不同。)

  如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_SERVER 和 $HTTP_SERVER_VARS 数组。相关信息,请参阅安全的相关章节 使用 Register Globals。这些单独的全局变量不是自动全局变量。

  您或许会发现下面列出的某些 $_SERVER 元素并不可用。注意,如果以命令行方式运行 PHP,下面列出的元素几乎没有有效的(或是没有任何实际意义的)。

  “PHP_SELF”

  当前正在执行脚本的文件名,与 document root相关。举例来说,在URL地址为 http://example.com/test.php/foo.bar的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果。

  如果 PHP 以命令行方式运行,该变量无效。

  “argv”

  传递给该脚本的参数。当脚本运行在命令行方式时,argv 变量传递给程序 C 语言样式的命令行参数。当调用 GET 方法时,该变量包含请求的数据。

  “argc”

  包含传递给程序的命令行参数的个数(如果运行在命令行模式)。

  “GATEWAY_INTERFACE”

  服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。

  'SERVER_NAME'

  当前运行脚本所在服务器主机的名称。如果该脚本运行在一个虚拟主机上,该名称是由那个虚拟主机所设置的值决定。

  'SERVER_SOFTWARE'

  服务器标识的字串,在响应请求时的头部中给出。

  “SERVER_PROTOCOL”

  请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。

  “REQUEST_METHOD”

  访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。

  “QUERY_STRING”

  查询(query)的字符串。

  “DOCUMENT_ROOT”

  当前运行脚本所在的文档根目录。在服务器配置文件中定义。

  “HTTP_ACCEPT”

  当前请求的 Accept: 头部的内容。

  “HTTP_ACCEPT_CHARSET”

  当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。

  “HTTP_ACCEPT_ENCODING”

  当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。

  “HTTP_ACCEPT_LANGUAGE”

  当前请求的 Accept-Language: 头部的内容。例如:“en”。

  “HTTP_CONNECTION”

  当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。

  “HTTP_HOST”

  当前请求的 Host: 头部的内容。

  “HTTP_REFERER”

  链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是正确真实的。

  “HTTP_USER_AGENT”

  当前请求的 User_Agent: 头部的内容。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。您也可以使用 get_browser() 得到这个信息。

  “REMOTE_ADDR”

  正在浏览当前页面用户的 IP 地址。

  'REMOTE_HOST'

  正在浏览当前页面用户的主机名。反向域名解析基于该用户的 REMOTE_ADDR。

  注: 必须配置 Web 服务器来建立此变量。例如 Apache 需要在 httpd.conf 中有 HostnameLookups On。参见 gethostbyaddr()。

  “REMOTE_PORT”

  用户连接到服务器时所使用的端口。

  “scrīpt_FILENAME”

  当前执行脚本的绝对路径名。

  “SERVER_ADMIN”

  该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。

  “SERVER_PORT”

  服务器所使用的端口。默认为“80”。如果你使用 SSL 安全连接,则这个值为您所设置的 HTTP 端口。

  “SERVER_SIGNATURE”

  包含服务器版本和虚拟主机名的字符串。

  “PATH_TRANSLATED”

  当前脚本所在文件系统(不是文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。

  “scrīpt_NAME”

  包含当前脚本的路径。这在页面需要指向自己时非常有用。

  “REQUEST_URI”

  访问此页面所需的 URI。例如,“/index.html”。

  “PHP_AUTH_USER”

  当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。

  “PHP_AUTH_PW”

  当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。

  “AUTH_TYPE”

  当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。

  以上就是本文介绍的PHP获取当前url全部方法,

PHP获取 当前页面名称、主机名、URL完整地址、URL参数、获取IP的更多相关文章

  1. JS 通过url地址栏获取html页面名称

    有的时候需要获取页面名称,为此我在这里封装了一个方. 一.分别根据传递不同的参数,获取到html页面的名称. 通过传递参数,获取到html页面的名称:参数params 以下是参数解释说明 (1)par ...

  2. windows和linux下如何远程获取操作系统版本和主机名

    远程获取windows和linux操作系统版本和主机名需要具备以下条件: 假设 主机A(windows 7),ip:192.168.12.2 主机B(centos 6.3),ip:192.168.12 ...

  3. python 实现获取电脑IP、主机名、Mac地址

    import socket import uuid # 获取主机名 hostname = socket.gethostname() #获取IP ip = socket.gethostbyname(ho ...

  4. python实现获取电脑IP、主机名、Mac地址

    import socket import uuid # 获取主机名 hostname = socket.gethostname() #获取IP ip = socket.gethostbyname(ho ...

  5. js获取当前页面名称

    // 取当前页面名称(不带后缀名) function pageName() { var a = location.href; var b = a.split("/"); var c ...

  6. 域名、主机名、网站名以及 URL 基础概念

    这个东西,在百度经验上已经有人讲得非常清楚了, 作为 web 方向的小白, 我写下我的理解,以便日后查看. 以 https:// www.3vjia.com 为例, 见下图: DNS (Domain ...

  7. 查看局域网内所有的主机名、MAC地址和IP地址

    查看所有 IP at MAC $ arp -a ? (10.125.49.187) at 18:81:e:eb:ef:c0 on en0 ifscope [ethernet] ? (10.125.50 ...

  8. c语言 c++ 实现查看本地ip,外网ip, 本地主机名,查看http网址对应的ip

    /******************************************************************************* 作者 :邓中强 Email :1246 ...

  9. 根据IP查主机名和MAC地址

    根据IP查主机名: nbtstat -a XXX.XXX.XXX.XXX根据IP查MAC地址: arp -a XXX.XXX.XXX.XXXXXX.XXX.XXX.XXX指代要查的主机的IP

随机推荐

  1. Jenkins里邮件插件触发器配置和Send to Developers到底是什么意思(转)

    邮件触发类型介绍(Triggers) By default, the onlytrigger configured is the "Failure" trigger.  To ad ...

  2. php cli模式下调试

    //设置内存大小 ini_set('memory_limit','512M'); //打开日志 ini_set('log_errors', 'On'); //定向日志记录文件 ini_set('err ...

  3. Google开源基于Tensorflow的NLP框架重大升级

    http://weibo.com/ttarticle/p/show?id=2309404086117195475716

  4. 命令提示符中运行SQL Server 2005

      使用 sqlcmd 实用工具,可以在命令提示符处.SQLCMD 模式下的查询编辑器.Windows 脚本文件或 SQL Server 代理作业的操作系统 (Cmd.exe) 作业步骤中,输入 Tr ...

  5. IOS开发~开机启动&无限后台运行&监听进程

    非越狱情况下实现: 开机启动:App安装到IOS设备设备之后,无论App是否开启过,只要IOS设备重启,App就会随之启动: 无限后台运行:应用进入后台状态,可以无限后台运行,不被系统kill: 监听 ...

  6. EasyMvc入门教程-基本控件说明(10)图片轮播导航

    图片轮播导航大家一定很常见,尤其是中小型建站系统的必备神器..:) 先上图上例子,看效果如下: 实现代码如下: @{ var data = new List<PhotoPlayerItem> ...

  7. LeetCode OJ 之 Ugly Number (丑数)

    题目: Write a program to check whether a given number is an ugly number. Ugly numbers are positive num ...

  8. JAVA Eclipse ActivityManager Warning Activity not started, its current task has been brought to the front怎么办

    Eclipse运行提示Activity not started,因为当前程序已经在运行,需要退出当前程序再测试

  9. iOS 应用内跳转到系统设置

    在iOS5下面版本号使用下面方法:[IOS5.1+之后不能使用此方法.iOS8的跳转方法已找到见下方,iOS7的正在摸索,欢迎大家给出观点意见] 通过URL Scheme的方式打开内置的Setting ...

  10. C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...