PHP $_SERVER["QUERY_ST…
2016-03-04 09:53
627 查看
PHP
$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]、$_SERVER["SCRIPT_NAME"]和$_SERVER["PHP_SELF"]写的挺明细的
转载请保留:http://blog.csdn.net/wolinxuebin
导读:本文分两部分,第一部分转自一篇文章,第二部分是作者在转了这篇文章1个半月工作之后的自己的理解
第一部分:转自互联网的文章
下文参考转自:http://bbs.php100.com/read-htm-tid-141258.html
$_SERVER存储当前服务器信息,其中有几个值如$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"]和$_SERVER["PHP_SELF"]常常容易混淆,以下通过实例详解$_SERVER函数中QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF变量区别,掌握这四者之间的关系,便于在实际应用中正确获取所需要的值,供参考。
1,$_SERVER["QUERY_STRING"]
说明:查询(query)的字符串
2,$_SERVER["REQUEST_URI"]
说明:访问此页面所需的URI
3,$_SERVER["SCRIPT_NAME"]
说明:包含当前脚本的路径
4,$_SERVER["PHP_SELF"]
说明:当前正在执行脚本的文件名
实例:
1,http://www.biuuu.com/ (直接打开主页)
结果:
$_SERVER["QUERY_STRING"] = ""
$_SERVER["REQUEST_URI"] =
"/"
$_SERVER["SCRIPT_NAME"] =
"/index.php"
$_SERVER["PHP_SELF"]
= "/index.php"
2,http://www.biuuu.com/?p=222 (附带查询)
结果:
$_SERVER["QUERY_STRING"] = "p=222"
$_SERVER["REQUEST_URI"] =
"/?p=222"
$_SERVER["SCRIPT_NAME"] =
"/index.php"
$_SERVER["PHP_SELF"]
= "/index.php"
3,http://www.biuuu.com/index.php?p=222&q=biuuu
结果:
$_SERVER["QUERY_STRING"] = "p=222&q=biuuu"
$_SERVER["REQUEST_URI"] =
"/index.php?p=222&q=biuuu"
$_SERVER["SCRIPT_NAME"] =
"/index.php"
$_SERVER["PHP_SELF"]
= "/index.php"
$_SERVER["QUERY_STRING"]获取查询语句,实例中可知,获取的是?后面的值
$_SERVER["REQUEST_URI"] 获取http://www.biuuu.com后面的值,包括/
$_SERVER["SCRIPT_NAME"] 获取当前脚本的路径,如:index.php
$_SERVER["PHP_SELF"] 当前正在执行脚本的文件名
总结一下,对于QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF,深入了解将有利于我们在$_SERVER函数中正确调用这四个值。通过实例详解$_SERVER函数中QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF掌握四个变量之间的区别。
第一部分:作者自我总结(如果看了上面的已经明白就不比想看)
关键字:QUERY_STRING、REQUEST_URI、SCRIPT_NAME、 PHP_SELF
1,QUERY_STRING
按照字面翻译就是查询字符串,那么那些才是呢?
简单的理解就是,如果你输入一个网址:www.baidu.com?test=1&test2=2 那么就是说?之后带的字符就是,不管你输入什么。
2,REQUEST_URI
字面的翻译是请求url,那就是说你在地址栏里面不论输入什么,那么他显示的结果都是你输入全部内容的。(除去前面的,比如www.baidu.com
和127.0.0.1这类的域名外的全部内容)
3,SCRIPT_NAME
直接翻译是脚本的名称,这个理解有点困难,而且一般情况下都会和
PHP_SELF混起来。可以参考这篇文章:http://blog.csdn.net/wolinxuebin/article/details/7630268
4,PHP_SELF
说明:当前正在执行脚本的文件名,如第三点。
现在看看我输入一个东西的结果:比如输入http://127.0.0.1/study/test.php
那么他们两个的结果应该是一样的,都是:/study/test.php(都是除去查询内容外的,现在执行的全部内容)
但是当输入127.0.0.1/study/test.php/1.php时,不过我也不知道这个能不能行,从来没用过。
那么self就会带上后面的垃圾成为了/study/test.php/1.php,而SCRIPT_NAME依旧还是/study/test.php
实际应用:
如果你在做项目,看到这段代码:
[php] view
plaincopy
if(!isset($_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'];
if(isset($_SERVER['QUERY_STRING'])) $_SERVER['REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING'];
}
一定不要陌生,实现什么功能?
实现的是获取URL,不是$_SERVER["REQUEST_URI"]
就好了吗?
答:如果在apache下,是的,但是其他地方就不能识别了。
下面两篇文章讲的是一样的东西,只不过函数更加详细:
文章1:http://www.vip7758.com/106.html
文章2:http://blog.sina.com.cn/s/blog_748fd4180100rdi7.html
相关文章推荐
- question_018-JAVA之Map之TreeMap键为自定义对象
- mysqli->multi_query()多条语句的…
- mysqli_query和mysql_query有何区…
- include require include_on…
- UISearchController使用方法及注意事项
- 用xib自定义UITableViewCell的注意事项——重用问题
- LeetCode-60-Permutation Sequence(找规律)-Medium
- 自定义UITabBarController标签视图控制器
- 自定义UITabBarController标签视图控制器
- 获取手机唯一标识符(UUID+KeyChain)
- HDU 4632 Palindrome subsequence(区间DP)
- HDU 4632 Palindrome subsequence(区间DP)
- DDOS--DNS Query Flood
- ueditor 1.4.3.2 独立/单独 上传图片框原理
- NGUI研究院之三种方式监听NGUI的事件方法
- 初次接触vue
- Vision GUI programming products
- Installation of Torque/Maui for a Beowulf Cluster
- RHEL Installation Guide
- torque 简介