php之获取地址栏信息

在这里插入图片描述


	echo  __FILE__;                           //E:\phpstudy_pro\WWW\ceshi\dir\demo.php
	
	echo  $_SERVER["SCRIPT_FILENAME"];        //E:/phpstudy_pro/WWW/ceshi/dir/demo.php
	
	echo  $_SERVER['SCRIPT_NAME'];            dir/demo.php
	
	echo  __DIR__;                            //E:\phpstudy_pro\WWW\ceshi\dir
	
	echo $_SERVER['HTTP_HOST'];               //ceshi:1234,获取域名或主机地址
	
	echo $_SERVER["SERVER_PORT"];             //1234,获取端口
	
	echo $_SERVER["REQUEST_URI"];             ///dir/demo.php?str=demo&num=1,获取域名后的详细地址
	
	echo $_SERVER['PHP_SELF'];                //dir/demo.php,获取PHP文件名
	
	echo $_SERVER["QUERY_STRING"];            //str=demo&num=1,获取PHP后的网址参数
	
	print_r($_SERVER);                        //服务器各种数据
	



#测试网址:     http://localhost/blog/testurl.php?id=5
 
//获取用户代理 
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'];
#http://localhost/blog/testurl.php?id=5

//包含端口号的完整url
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
#http://localhost:80/blog/testurl.php?id=5

//只取路径
$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; 
echo dirname($url);
#http://localhost/blog

注释

$_SERVER[‘SCRIPT_FILENAME’] 与 FILE

通常情况下,PHP $_SERVER[‘SCRIPT_FILENAME’] 与 _FILE_ 都会返回 PHP 文件的完整路径(绝对路径)与文件名

就像上面返回的值一样,但在 windows 平台测试,得到结果如上所示可能会出现路径分隔符的细微差别。

区别

尽管 $_SERVER[‘SCRIPT_FILENAME’] 与 __FILE__ 非常相似,但在文件被 include 或 require 包含的时候,二者还是有细微区别。
$ _SERVER[‘SCRIPT_FILENAME’] 反映的是当前执行程序的绝对路径及文件名;__FILE__ 反映的是原始文件(被包含文件)的绝对路径及文件名。

PHP中的$ _SERVER[‘HTTP_HOST’]$_SERVER[‘SERVER_NAME’]的区别

通过:$ _SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’]可以获取域名及请求的URL。

1、当满足以下3个条件的时候,两者会输出相同的信息
  • (1)、服务器端口号为80
  • (2)、Apache中的conf中的ServerName设置正确
  • (3)、HTTP/1.1协议规范
2、不同点
  • (1),通常情况:

    • _SERVER[“HTTP_HOST”] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。
    • _SERVER[“SERVER_NAME”] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。
  • (2),当服务器为非80端口时:

    • _SERVER[“HTTP_HOST”] 会输出端口号,例如:mimiz.cn:8080
    • _SERVER[“SERVER_NAME”] 会直接输出ServerName值
      因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT

所以,在实际程序中,应尽量使用_SERVER[“HTTP_HOST”] ,比较保险和可靠。

在这里插入图片描述

posted @ 2022-04-02 09:47  coderwcb  阅读(9)  评论(0编辑  收藏  举报