PHP获取当前url路径的函数及服务器变量

[size=medium]1,$_SERVER["[color=red]QUERY_STRING[/color]"][/size]
[b]说明[/b]:查询(query)的字符串
[size=medium]2,$_SERVER["[color=red]REQUEST_URI[/color]"][/size]
[b]说明[/b]:访问此页面所需的URI
[size=medium]3,$_SERVER["[color=red]SCRIPT_NAME[/color]"][/size]
[b]说明[/b]:包含当前脚本的路径
[size=medium]4,$_SERVER["[color=red]PHP_SELF[/color]"][/size]
[b]说明[/b]:当前正在执行脚本的文件名

[size=medium][b][color=blue]实例[/color][/b][/size]:

[size=medium]1,http://www.baidu.com/ (直接打开主页)[/size]
[size=medium][b][color=blue]结果[/color][/b][/size]:

$_SERVER["QUERY_STRING"] = ""
$_SERVER["REQUEST_URI"] = "/"
$_SERVER["SCRIPT_NAME"] = "/index.php"
$_SERVER["PHP_SELF"] = "/index.php"


[size=medium]2,http://www.baidu.com/?p=222 (附带查询)[/size]
[size=medium][b][color=blue]结果[/color][/b][/size]:

$_SERVER["QUERY_STRING"] = "p=222";
$_SERVER["REQUEST_URI"] = "/?p=222";
$_SERVER["SCRIPT_NAME"] = "/index.php";
$_SERVER["PHP_SELF"] = "/index.php";


[size=medium]3,http://www.baidu.com/index.php?p=222&q=biuuu[/size]
[size=medium][b][color=blue]结果[/color][/b][/size]:

$_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"]; //当前正在执行脚本的文件名
echo $_SERVER['DOCUMENT_ROOT'].""; //获得服务器文档根变量
echo $_SERVER['PHP_SELF'].""; //获得执行该代码的文件服务器绝对路径的变量
echo __FILE__; //获得文件的文件系统绝对路径的变量
echo dirname(__FILE__); //获得文件所在的文件夹路径的函数


[size=medium][b][color=red]总结一下[/color][/b][/size]:
对于[b][color=green]QUERY_STRING[/color][/b],[b][color=green]REQUEST_URI[/color][/b],[b][color=green]SCRIPT_NAME[/color][/b]和[b][color=green]PHP_SELF[/color][/b],深入了解将有利于我们在$_SERVER函数中正确调用这四个值。通过实例详解$_SERVER函数中QUERY_STRING,REQUEST_URI,SCRIPT_NAME和PHP_SELF掌握四个变量之间的区别。

来观察一下这些变量或函数的异同.
假设有一个请求地址为: http://localhost:8080/test.php/age=20
而test.php 的完整路径是: D:/server/www/example/test.php

[size=medium]1) [color=red]getcwd[/color]()[/size]
将得到浏览器请求的页面文件所在的目录. 即test.php 文件所在的目录: D:/server/www/example/ ,
如果在test.php 执行了 require 或 include 语句, 比如 inculde(”test_dir/test2.php”),
那么在 test2.php 里 getcwd()函数 返回的也将是 test.php 所在的目录.

[size=medium]2)[color=red]__FILE__[/color][/size]
一个魔术变量, 用它将得到 __FILE__ 变量所在文件的完整路径,
[b]比如[/b]: test.php 里 __FILE__ 将得到 D:/server/www/example/test.php ,
test_dir/test2.php 里的 __FILE__ 将得到 D:/server/www/example/test_dir/test2.php

[size=medium]3) $_SERVER["[color=red]SCRIPT_FILENAME[/color]"][/size]
将得到浏览器请求的页面文件的完整路径.
test.php 和 test_dir/test2.php 里用 $_SERVER["SCRIPT_NAME"] 都将得到 D:/server/www/example/test.php.

[size=medium]4) $_SERVER["[color=red]SCRIPT_NAME[/color]"][/size]
将得到浏览器请求的页面文件的文件名,注意: 与 $_SERVER["SCRIPT_NAME"] 不同, 此变量只得到文件名而不包含路径,
在test.php 与 test_dir/test2.php 用$_SERVER["SCRIPT_NAME"] 得到的都将是 test.php.
当然, 在test.php 与 test_dir/test2.php 执行 basename($_SERVER["SCRIPT_FILENAME"]) 与 $_SERVER["SCRIPT_NAME"] 相同.
执行 在test.php 与 test_dir/test2.php 执行 realpath(”test.php”) 得到的结果与 $_SERVER["SCRIPT_FILENAME"] 相同.

[size=medium]5) $_SERVER["[color=red]PHP_SELF[/color]"][/size]
将得到浏览器请求页面的文件名, 并剥掉问号 ? 后的内容, 注意:不包含路径,
比如在客户端里请求 http://localhost:8080/test.php?age=20&name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER["PHP_SELF"] 都将得到 “test.php”。“age=20&name=Tom”被剥掉。
而如果客户端里请求 http://localhost:8080/test.php/age=20&name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER["PHP_SELF"] 都将得到 “test.php/age=20&name=Tom”。

[size=medium]6) $_SERVER["[color=red]REQUEST_URI[/color]"][/size]
将得到浏览器请求页面的文件名, 以及文件名之后的所有内容(注意: 井号 # 之后的内容将被略去),
比如在客户端里请求 http://localhost:8080/test.php?age=20&name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER["REUEST_URI"] 都将得到 “test.php”。“age=20&name=Tom”被剥掉。
而如果客户端里请求 http://localhost:8080/test.php/age=20&name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER["REQUEST_URI"] 都将得到 “test.php/age=20&name=Tom”。
*/


// test.php:
echo “test1.php variables <br />”;
echo “getcwd: “, getcwd(), “<br />”;
echo “__FILE__: “, __FILE__, “<br />”;
echo “REQUEST_URI: “, $_SERVER["REQUEST_URI"], “<br />”;
echo “SCRIPT_NAME: “, $_SERVER["SCRIPT_NAME"], “<br />”;
echo “PHP_SELF: “, $_SERVER["PHP_SELF"], “<br />”;
echo “SCRIPT_FILENAME “, $_SERVER["SCRIPT_FILENAME"] , “<br />”;

// 把 test2.php 包含进来, 在 test2.php 里输出上面的变量,看有什么不同:
include_once(”test2/test2.php”);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值