php获取当前url路径 php服务器变量

发布时间:2020-09-26编辑:脚本学堂
本文介绍了php获取当前url路径,以及php服务器变量的一些知识,有需要的朋友参考下。

php编程中编程,获取当前url地址,以及服务器变量,主要使用如下全局变量
$_server["query_string"],$_server["request_uri"],$_server["script_name"],$_server["php_self"]

1,$_server["query_string"]
说明:查询(query)的字符串
2,$_server["request_uri"]
说明:访问此页面所需的uri
3,$_server["script_name"]
说明:包含当前脚本的路径
4,$_server["php_self"]
说明:当前正在执行脚本的文件名

实例:
1,http://www.jb200.com/ (直接打开主页)
结果:
$_server["query_string"] = ""
$_server["request_uri"] = "/"
$_server["script_name"] = "/index.php"
$_server["php_self"]     = "/index.php"

2,http://www.jb200.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.jb200.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.jb200.com后面的值,包括/
$_server["script_name"] 获取当前脚本的路径,如:index.php
$_server["php_self"] 当前正在执行脚本的文件名

当前url:"http://".$_server['http_host'].$_server['php_self']

总结:
对于query_string,request_uri,script_name和php_self,深入了解将有利于我们在$_server函数中正确调用这四个值。通过实例详解$_server函数中query_string,request_uri,script_name和php_self掌握四个变量之间的区别。
$_server["request_uri"] :获取当前请求的完整的(除域名的)url。。。
 
uchome系统中处理技巧:
 

复制代码 代码示例:

//处理request_uri 
if(!isset($_server['request_uri'])) {   
    $_server['request_uri'] = $_server['php_self']; 
    if(isset($_server['query_string'])) $_server['request_uri'] .= '?'.$_server['query_string']; 

if($_server['request_uri']) { 
    $temp = urldecode($_server['request_uri']); 
    if(strexists($temp, '<') || strexists($temp, '"')) { 
        $_get = shtmlspecialchars($_get);//xss 
    } 

<?php 
echo $_server['document_root']."<br>"; //获得服务器文档根变量 
echo $_server['php_self']."<br>"; //获得执行该代码的文件服务器绝对路径的变量 
echo __file__."<br>"; //获得文件的文件系统绝对路径的变量 
echo dirname(__file__); //获得文件所在的文件夹路径的函数 
?> 
//server函数
$_server["http_referer"]=http://localhost/lianxi/
$_server["http_accept_language"]=zh-cn
$_server["http_accept_encoding"]=gzip, deflate
$_server["http_user_agent"]=mozilla/4.0 (compatible; msie 6.0; windows nt 5.2; .net clr 1.1.4322; .net clr 2.0.50727)
$_server["http_host"]=localhost
$_server["http_connection"]=keep-alive
$_server["path"]=c:windowssystem32;c:windows;c:windowssystem32wbem;c:program filescommon filesadobeagl;c:program filesmysqlmysql server 5.0bin;c:php;c:phpext
$_server["systemroot"]=c:windows
$_server["comspec"]=c:windowssystem32cmd.exe
$_server["pathext"]=.com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh
$_server["windir"]=c:windows
$_server["server_signature"]=
apache/2.0.55 (win32) php/5.1.1 server at localhost port 80 使用的何服务器
$_server["server_software"]=apache/2.0.55 (win32) php/5.1.1
$_server["server_name"]=localhost 服务器名称
$_server["server_addr"]=127.0.0.1
$_server["server_port"]=80 服务器端口
$_server["remote_addr"]=127.0.0.1
$_server["document_root"]=d:/lianxi 网站的主目录
$_server["server_admin"]=sss@163.com 安装apache时设置的邮箱
$_server["script_filename"]=d:/lianxi/lianxi/servervalues.php 当前的网页的绝对路径,
$_server["remote_port"]=1076 远程端口
$_server["gateway_interface"]=cgi/1.1
$_server["server_protocol"]=http/1.1
$_server["request_method"]=get
$_server["query_string"]=获取?号后面的内容
$_server["request_uri"]=例子:/lianxi/servervalues.php?a=1&b=2
$_server["script_name"]=例子:/lianxi/servervalues.php
$_server["php_self"]=/lianxi/servervalues.php 返回当前网页的相对路径.
$_server["request_time"]=1179190013 运行时间 单位为十万分之一毫秒
$_server["argv"]=array
$_server["argc"]=0

例2:
 

复制代码 代码示例:
<?php 
/**
__file__ ,
getcwd(),
$_server["request_uri"],
$_server["script_name"],
$_server["php_self"],
$_server["script_filename"],
 

这些变量或函数的异同.
假设有一个请求地址为: http://localhost:8080/test.php/age=20
而test.php 的完整路径是: d:/server/www/example/test.php
1)、getcwd()
将得到浏览器请求的页面文件所在的目录. 即test.php 文件所在的目录: d:/server/www/example/ ,
如果在test.php 执行了 requireinclude 语句, 比如 inculde(”test_dir/test2.php”),
那么在 test2.php 里 getcwd()函数 返回的也将是 test.php 所在的目录.

2)、__file__
一个魔术变量, 用它将得到 __file__ 变量所在文件的完整路径,
比如: test.php 里 __file__ 将得到 d:/server/www/example/test.php ,
test_dir/test2.php 里的 __file__ 将得到 d:/server/www/example/test_dir/test2.php
 
3)、$_server["script_filename"]
将得到浏览器请求的页面文件的完整路径.
test.php 和 test_dir/test2.php 里用 $_server["script_name"] 都将得到 d:/server/www/example/test.php.
 
4)、$_server["script_name"]
将得到浏览器请求的页面文件的文件名,注意: 与 $_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"] 相同.
 
5)、$_server["php_self"]
将得到浏览器请求页面的文件名, 并剥掉问号 ? 后的内容, 注意:不包含路径,
比如在客户端里请求 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”。
 
6)、$_server["request_uri"]
将得到浏览器请求页面的文件名, 以及文件名之后的所有内容(注意: 井号 # 之后的内容将被略去),
比如在客户端里请求 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”);
?>