TOP

超實用!PHP 的 $_SERVER詳解
2019-12-20 11:40:29   字體:【 】  瀏覽:297次   評論: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
54 身份還未認證 郵箱還未認證 手機還未認證 給它發送短消息 搜尋它在php發布的全部文章 53

最新文章

網站服務地區

油尖旺區網站建設
陽泉市網站建設
桃園縣網站建設
寧河縣網站建設
臺中市網站建設
澳門市望德堂區網站建設
克孜勒蘇柯爾克孜自治州網站建設
神農架林區網站建設
呼倫貝爾市網站建設
拉薩市網站建設
松原市網站建設
合肥市網站建設
沙坪壩區網站建設
通州區網站建設
自貢市網站建設
嘉興市網站建設
陽江市網站建設
咸陽市網站建設
泉州市網站建設
南岸區網站建設
澳門市風順堂區網站建設
普陀區網站建設

本月熱門

相關文章

(★^O^★)MG呼噜噜爱上乡下怎么玩容易爆分 单机麻将四人免费下载 亿客隆 河北20选五下期预测 博彩龙 微乐棋牌白山麻将更新 闲来宁夏麻将正式版 贵阳微乐手机麻将 广东36选7几点钟 陕西快乐10分钟开奖结果查询 南通棋牌app 网络棋牌一个月赢了17万 下载腾讯麻将来了 全天重庆彩稳定计划 广东36选7好彩3奖金 重庆快乐十分一定牛前一 体育彩票开奖结果