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全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
PHP获取请求路径和请求参数
获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br>"; // www.appblog.cn echo 'http://'.$_SERVER['HTTP_HOST……
<<上一篇
下一篇>>
文章目录
关闭
目 录