$_SERVER

php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别

六眼飞鱼酱① 提交于 2020-02-29 06:31:50
最近在开发站群软件,用到了根据访问域名判断子站点的相关问题。PHP获取当前域名有两个变量 HTTP_HOST 和 SERVER_NAME,我想知道两者的区别以及哪个更加可靠。 首先我想说,百度上那些转来转去的文章都是扯淡! 有说相同的,有说不同的,都没说明原因,没经过验证就互相转来转去的,浪费观众时间。 下面说说本人经过亲自验证 + 查阅官方文档 + 官方BUG列表 + 官方邮件列表 + sitepoint + webmasterworld + google的总结: 相同点: 当满足以下三个条件时,两者会输出相同信息。 1. 服务器为80端口 2. apache的conf中ServerName设置正确 3. HTTP/1.1协议规范 不同点: 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 :

PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址

对着背影说爱祢 提交于 2019-12-10 14:35:49
PHP $_SERVER['HTTP_REFERER'] 使用 $_SERVER['HTTP_REFERER'] 将很容易得到链接到当前页面的前一页面的地址。一个例子如下: index.php(实际地址为:http://www.ywp.com/php/index.php): <a href="test.php">链接</a> test.php(实际地址为:http://www.ywp.com/php/test.php): echo $_SERVER['HTTP_REFERER']; 在浏览器访问 index.php,点击链接到 test.php,得到的输出结果为: http://www.ywp.com/php/index.php PHP $_SERVER['HTTP_REFERER'] 无效 需要注意的是,$_SERVER['HTTP_REFERER'] 完全来源于浏览器。并不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,$_SERVER['HTTP_REFERER'] 不总是真实正确的。 通常下面的一些方式,$_SERVER['HTTP_REFERER'] 会无效: 直接输入网址访问该网页。 Javascript 打开的网址。 Javascript 重定向(window.location)网址。 使用 meta refresh

PHP服务器变量$_SERVER详解(个人整理)

回眸只為那壹抹淺笑 提交于 2019-11-27 08:37:46
今天仔细学习了一下手册关于服务器变量的内容,写个一个笔记,贴出来希望对大家有所帮助。 服务器变量 $_SERVER 详解: 1、 $_SESSION ['PHP_SELF'] -- 获取当前正在执行脚本的文件名 2、$_SERVER['SERVER_PROTOCOL'] -- 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 3、$_SERVER['REQUEST_TIME'] -- 请求开始时的时间戳。从 PHP 5.1.0 起有效。和time函数效果一样。 4、$_SERVER['argv'] -- 传递给该脚本的参数。我试了下,get方法可以得到$_SERVER['argv'][0];post方法无法给他赋值。 5、$_SERVER['SERVER_NAME'] -- 返回当前主机名。 6、$_SERVER['SERVER_SOFTWARE'] -- 服务器标识的字串,在响应请求时的头信息中给出。 如Microsoft-IIS/6.0 7、$_SERVER['REQUEST_METHOD'] -- 访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。 8、$_SERVER['QUERY_STRING'] -- 查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。 9、$_SERVER['DOCUMENT_ROOT'] -