URL相关
==
SCRIPT_NAME:主要到.后缀(只保留到.php)就结束
PHP_SELF:取问号之前(.php/abc?abc则到/abc结束)----从DocumentRoot(根目录)到本文件的路径
QUERY_STRING:取问号之后(.php/abc?abc则为abc)
REQUEST_URI:各种带
PATH_INFO:保留.php后到问号之前的/abc/bcd格式的字符串
HTTP_HOST:域名(只含域名 不含http等杂物)
DOCUMENT_ROOT:即apache配置文件中指定的DocumentRoot (E:\www\)
SCRIPT_NAME:从DocumentRoot(根目录)到本文件的路径+当前文件名(\test\test.php)
PHP_SELF:从DocumentRoot(根目录)到本文件的路径+当前文件名(\test\test.php)//不常用
__FILE__:从磁盘开始到本文件的绝对路径(E:\www\test\test.php)
<?php
//获取域名或主机地址
echo $_SERVER['HTTP_HOST']."<br />";
//获取网页地址
echo $_SERVER['PHP_SELF']."<br />";
//获取网址参数
echo $_SERVER["QUERY_STRING"]."<br />";
//获取用户代理
echo $_SERVER['HTTP_REFERER']."<br />";
//获取完整的url
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
//包含端口号的完整url
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
//只取路径
$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];
echo dirname($url);
?>
源文件:
test.php
<?php
echo "The SCRIPT_FILENAME: ";
echo $_SERVER['SCRIPT_FILENAME']."
";
echo "The SCRIPT_NAME: ";
echo $_SERVER['SCRIPT_NAME']."
";
echo "The PHP_SELF: ";
echo $_SERVER['PHP_SELF']."
";
echo 'The __FILE__ : ';
echo __FILE__."
";
?>
test2.php:
<?php
include("./test.php");
echo "The end";
?>
结果:
1、直接执行http://127.0.0.1/test.php
The SCRIPT_FILENAME: /w/c/l/test.php
The SCRIPT_NAME: /test.php
The PHP_SELF: /test.php
The __FILE__ : /w/c/l/test.php
2、执行http://127.0.0.1/test2.php
The SCRIPT_FILENAME: /w/c/l/test2.php
The SCRIPT_NAME: /test2.php
The PHP_SELF: /test2.php
The __FILE__ : /w/c/l/test.php
The end
结论:__FILE__永远是自己所在的文件,其他的都是为别人做嫁衣!
另外,PHP_SELF将会得到pathinfo的部分。如test.php/abc=sd
还有一个'REQUEST_URI',将包含get来的参数,比如test.php?abc=1
-----
[php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别](http://it.oyksoft.com/post/3158/)
- 目录
- 第一章:PHP简介、开发环境、基本语法
- 0.0 各类操作系统下环境配置
- 1.0 基本语法和控制符
- 1.1 变量常量
- 1.1.1 显示数据Echo、Var_dump
- 1.1.2 数据类型
- 1.2 判断逻辑(if、switch)
- 1.3 循环逻辑(for、while)
- 1.4 数组
- 1.4.1 Foreach循环
- 1.4.2 数组操作
- 1.5 函数
- 1.5.5 编码规范PSR
- 1.6 魔术变量
- 1.7 超全局变量
- 1.8 时间日期
- 1.9 字符串操作
- 1.10 开发/部署环境配置
- 1.11 PECL 、 Yaf 、 Swoole
- 第二章:PHP+数据库
- 2.0 SQL入门
- 2.1 PDO连接、操作数据库
- 2.2 PDO的CURD操作
- 2.3 预处理
- 2.4 SQLite轻量级数据库
- 2.5 NoSQL数据库
- 2.6 缓存 、主从复制、集群 、负载均衡
- _连接 + 管理数据库(过期)
- _增删查改CURD操作(过期)
- 第三章:PHP面向对象 + 常用功能
- 5.1 面向对象入门
- 5.2 面向对象特性
- 5.3 文件上传
- 5.4 富文本编辑
- 5.6 MVC框架模式
- 5.7 文件读取函数
- 5.8 URL相关
- 5.9 Serialize序列化
- 第四章:Cookie+Session+用户模块
- 4.1 Cookie
- 4.2 Session
- 4.3 用户中心
- 4.4 SSO单点登录
- 4.5 类 C S 架构REST和Oauth用户中心
- 第五章:Linux基础+Git入门+远程部署
- 3.1 Linux基础
- 3.2 Git使用
- 3.3 远程部署
- 第六章:PHP框架
- 第七章:PHP安全和测试
- 第八章:包管理工具+PSR代码规范
- PHP社区代码规范 PSR
- 第九章:PHP测试 + PHP调试
- 第十章:性能优化+网站架构+第三方服务
- 10.1 云计算和网站架构
- 第十一章:PHP拓展
- 拓展:十二章 PHP爬虫
- 拓展:十三章 CMS实战
- 拓展:十四章 微信公众号开发
- 拓展:第十五章 注释、API文档、IDE自动提示
- 拓展:第十六章 API开发
- 附录:参考资料
- 附录:实用在线工具
- 实用技巧和常用函数
- Linux下WDCP主机面板配置
- 使用Git部署到MoPass云
- Curl内网访问封装函数
- 附录:开源组件参考