PHP获取请求路径和请求参数
获取域名或主机地址
echo $_SERVER['HTTP_HOST']."<br>"; // www.appblog.cn
echo 'http://'.$_SERVER['HTTP_HOST'].'/'; // http://www.appblog.cn/
获取网页地址
echo $_SERVER['PHP_SELF']."<br>"; // /Home/picture
获取网址参数
echo $_SERVER["QUERY_STRING"]."<br>"; // a=1&b=2
获取用户代理
echo $_SERVER['HTTP_REFERER']."<br>"; // http://www.appblog.cn/index.php/Home/index
获取完整的url
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br>"; // http://www.appblog.cn/index.php/Home/picture?a=1&b=2
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']."<br>"; // http://www.appblog.cn/Home/picture?a=1&b=2
包含端口号的完整url
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]."<br>"; // http://www.appblog.cn:80/index.php/Home/picture?a=1&b=2
只取路径
echo 'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]."<br>"; // http://www.appblog.cn/index.php/Home/picture?a=1&b=2
HTTP_HOST与SERVER_NAME的区别
(1)通常情况
$_SERVER["HTTP_HOST"]
在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息
$_SERVER["SERVER_NAME"]
默认情况下直接输出Apache的配置文件httpd.conf中的ServerName值(或Nginx配置文件)
(2)当服务器为非80端口时
$_SERVER["HTTP_HOST"]
会输出端口号,例如:appblog.cn:8080
$_SERVER["SERVER_NAME"]
会直接输出ServerName值
因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT
(3)当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时
httpd.conf配置如下:
<virtualhost *>
ServerName appblog.cn
ServerAlias www.appblog.cn
</virtualhost>
客户端访问域名www.appblog.cn
$_SERVER["HTTP_HOST"]
输出www.appblog.cn
$_SERVER["SERVER_NAME"]
输出appblog.cn
所以,在实际程序中,应尽量使用$_SERVER["HTTP_HOST"]
,比较保险和可靠。
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/18/php-get-request-path-and-request-parameters/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论