TOP

超实用!PHP 的 $_SERVER详解
2019-12-20 11:40:29   字体:【 】  浏览:262次   评论:0

$_SERVER 是PHP预定义的超全局变量。所谓“超全局变量”,即在脚本全部作用域中都可以使用,$_SERVER保存关于报头、路径和脚本位置的信息。工作中经常忘记,在此整理记录下,加深印象。测试是在Windows下进行的,环境为Apache/2.4.23 (Win32)+PHP/5.6.27-nts,访问域名为http://www.example.com/index....,文件目录在E:/WWW/example/

主要内容详解

$_SERVER["SCRIPT_NAME"] => "/index.php",当前脚本路径

$_SERVER["REQUEST_URI"] => "/index.php?id=1",访问的页面URI,包含查询字符串

$_SERVER["QUERY_STRING"] => "id=1",查询字符串,不存在为" "

$_SERVER["REQUEST_METHOD"] => "GET",请求方法,如"POST"、"PUT"等

$_SERVER["SERVER_PROTOCOL"] => "HTTP/1.1",通信协议的名称和版本

$_SERVER["GATEWAY_INTERFACE"] => "CGI/1.1",服务器使用的CGI 规范的版本

$_SERVER["REMOTE_PORT"] => "60599",用户连接服务器使用的端口

$_SERVER["SCRIPT_FILENAME"] => "E:/WWW/example/index.php",当前脚本的绝对路径

$_SERVER["DOCUMENT_ROOT"] => "E:/WWW/example/",当前脚本文档根目录的绝对路径

$_SERVER["REMOTE_ADDR"] => "127.0.0.1",用户的IP地址

$_SERVER["SERVER_PORT"] => "80",服务器使用的端口

$_SERVER["SERVER_ADDR"] => "127.0.0.1",服务器的IP地址

$_SERVER["SERVER_NAME"] => "www.example.com",服务器的主机名,注:如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。在 Apache 2 里,必须设置 UseCanonicalName = On 和 ServerName。 否则该值会由客户端提供,就有可能被伪造。 上下文有安全性要求的环境里,不应该依赖此值。

$_SERVER["SERVER_SOFTWARE"] => "Apache/2.4.23 (Win32) OpenSSL/1.0.2j mod_fcgid/2.3.9",响应头中Server的内容

$_SERVER["SERVER_SIGNATURE"] => "",包含了服务器版本和虚拟主机名的字符串

$_SERVER["HTTP_HOST"] => "www.example.com",请求头中Host项的内容

$_SERVER["HTTP_CONNECTION"] => "keep-alive",请求头中Connection项的内容

$_SERVER["HTTP_PRAGMA"] => "no-cache",请求头中Pragma项的内容

$_SERVER["HTTP_CACHE_CONTROL"] => "no-cache",请求头中Cache-Control项的内容

$_SERVER["HTTP_UPGRADE_INSECURE_REQUESTS"] => "1",请求头中Upgrade-Insecure-Requests项的内容

$_SERVER["HTTP_USER_AGENT"] => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",请求头中User-Agent项的内容

$_SERVER["HTTP_ACCEPT"] => "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8",请求头中Accept项的内容

$_SERVER["HTTP_ACCEPT_ENCODING"] => "gzip, deflate",请求头中Accept-Encoding项的内容

$_SERVER["HTTP_ACCEPT_LANGUAGE"] => "zh-CN,zh;q=0.8",请求头中Accept-Language项的内容

$_SERVER["PHP_SELF"] => "/index.php",当前执行脚本的文件名

$_SERVER["REQUEST_TIME_FLOAT"] => 1510112348.8084,请求开始的时间戳,微秒级别精准度

$_SERVER["REQUEST_TIME"] => 1510112348,请求开始的时间戳

实例

以上是测试中的 $_SERVER 的主要内容,根据不同的环境配置,会有些变化。在实际工作中,$_SERVER有很多作用,这里只举两个简单实例,获取当前请求URL以及简单防盗链

<?php
// $_SERVER['HTTPS']当前是否为HTTPS协议
if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
    $url = 'https://';
} else {
    $url = 'http://';
}

if ($_SERVER['SERVER_PORT'] == 80) {
    $url .= $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
} else {
    $url .= $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['SERVER_PORT'];
}

<?php
// $_SERVER['HTTP_REFERER'],前一页面的url
if (!empty($_SERVER['HTTP_REFERER'])) {
    if (!strpos($_SERVER['HTTP_REFERER'], 'www.example.com')) {
        header('Location: http://www.example.com');
    }
}


Tags:实用 PHP _SERVER 详解 责任编辑:绍00
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇php168 全站地图 webmap.php 下一篇file_get_content s()获取https出..

  • 系统环境:Windows Server 2008 R2 + Sql Server 2008 R2 问题描述:Windows Server 2008 R2系统内存占用率过大,而在任务管理器中各进程内存占用总和都远不到此占用率。相关现象:1. 内存占用率90%以上2. 任务管理器中所有进程内存和较低,远不到90%,有二十多G的内存偏差 分析过程: 首先怀疑SQL&..

  • ALTER TABLE zysjyj DROP aid;ALTER TABLE zysjyj ADD aid int(10) NOT NULL FIRST;ALTER TABLE zysjyj AUTO_INCREMENT=10000;ALTER TABLE zysjyj MODIFY COLUMN aid int(10) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(aid);

-->

发布者

绍00 绍00
等级:普通会员
积分:0 个
性别:保密
shao00@qq.com
51 身份还未认证 邮箱还未认证 手机还未认证 给它发送短消息 搜寻它在php发布的全部文章 50

最新文章

网站服务地区

伊春市网站建设
杭州市网站建设
巴音郭楞蒙古自治州网站建设
阜阳市网站建设
常州市网站建设
北碚区网站建设
湘西土家族苗族自治州网站建设
闸北区网站建设
岳阳市网站建设
宣武区网站建设
信阳市网站建设
淮北市网站建设
乌兰察布市网站建设
淄博市网站建设
楚雄彝族自治州网站建设
湘潭市网站建设
商洛市网站建设
乌海市网站建设
鄂州市网站建设
南投县网站建设
玉树藏族自治州网站建设
奉贤区网站建设

本月热门

相关文章