Php $ _ SERVER Information Analysis

Source: Internet
Author: User
There may be some incomplete information, and the complete code is not at the bottom? Php *** CreatedbyPhpStorm. * User: Inhere * Date: 2015227 * Use: (request source) Client information * File: Client. php * namespaceenvironment; *** Client information Client * classclientextends?actenv {*

There may be some incomplete information, and the complete code is not at the bottom? Php/*** Created by PhpStorm. * User: Inhere * Date: 2015/2/27 * Use: (request source) Client information * File: Client. php * // namespace environment;/*** Client information Client */class Client extends actenv {/*

The code may be incomplete. <无>
  'Remote _ ADDR ', // $ _ SERVER ['remote _ port'] 'Port' => 'remote _ port',/*** client (and SERVER) connect * $ _ SERVER ['HTTP _ connection'] = close * @ var string */'conn' => 'HTTP _ connection ', /*** acceptable resource type ** $ _ SERVER ['HTTP _ ACCEPT '] * @ var string * // e.g. text/html, application/xhtml + xml, application/xml; q = 0.9, image/webp, */*; q = 0.8 'access' => 'HTTP _ access ', /*** acceptable client Resource (compression) encoding * $ _ SERVER ['HTTP _ ACCEPT_ENCODING ']; * e.g. Gzip, deflate, sdch * @ var string */'acceptencoding '=> 'HTTP _ ACCEPT_ENCODING ', /*** language accepted by the client by default ** $ _ SERVER ['HTTP _ ACCEPT_LANGUAGE ']; * e.g. zh-CN, zh; q = 0.8 * @ var string */'acceptlang '=> 'HTTP _ ACCEPT_LANGUAGE',/*** user proxy (usually a browser) * $ _ SERVER ['HTTP _ USER_AGENT '] * e.g. mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 * @ var string */'use RAgent '=> 'HTTP _ USER_AGENT',]; protected $ data = ['ispc' => false, 'ismobile' => false, 'isunix '=> false, 'islinux '=> false, 'iswin' => false, 'ismac' => false, 'isandroid' => false,]; // It is a mobile terminal // protected $ isMobile = false; // protected $ platform; public function init () {parent: init (); // Parse the HTTP_ACCEPT. if ($ this-> accept) {$ this-> data ['accesss'] = $ this-> _ handlerInfo ($ this-> accep T);} // Parse the accepted encodings. if ($ this-> acceptEncoding) {$ this-> data ['encoding'] = $ this-> _ handlerInfo ($ this-> acceptEncoding );} if ($ this-> acceptLang) {$ this-> data ['langs'] = $ this-> _ handlerInfo ($ this-> acceptLang );} $ this-> data ['isslconnect '] = $ this-> isSSLConnection (); $ this-> data ['IP'] = $ this-> getIp (); $ this-> _ userAgentCheck ();} protected function _ handlerInfo ($ info) {return Rray_map (function ($ val) {return trim (strpos ($ val ,';')? Strchr ($ val, ';', true): $ val) ;}, (array) explode (',', $ info ));} /*** Determine if we are using a secure (SSL) connection. * @ return boolean True if using SSL, false if not. */public function isSSLConnection () {return (! Empty ($ _ SERVER ['https']) & strtolower ($ _ SERVER ['https'])! = 'Off');}/*** user-Agent Information Analysis * @ return bool */protected function _ userAgentCheck () {if (empty ($ _ SERVER ['HTTP _ USER_AGENT ']) {$ this-> data ['OS'] = $ this-> data ['browser'] = 'unknown '; return true ;} $ agent = strtolower ($ _ SERVER ['HTTP _ USER_AGENT ']);/* @ link http://detectmobilebrowser.com/mobile */If (preg_match ('/(android | bb \ d + | meego ). + mobile | avantgo | bada \/| blackberry | blazer | compal | Eline | fennec | hiptop | iemobile | ip (hone | od) | iris | kindle | lge | maemo | midp | mmp | mobile. + firefox | netfront | opera m (ob | in) I | palm (OS )? | Phone | p (ixi | re) \/| plucker | pocket | psp | series (4 | 6) 0 | symbian | treo | up \. (browser | link) | vodafone | wap | windows ce | xda | xiino/I ', $ agent) | preg_match ('/1207 | 6310 | 6590 | too so | 4thp | 50 [1-6] I | 770s | 802s | a wa | abac | ac (er | oo | s \-) | ai (ko | rn) | al (av | ca | co) | amoi | an (ex | ny | yw) | aptu | ar (ch | go) | as (te | us) | attw | au (di | \-m | r | s) | avan | be (ck | ll | nq) | bi (lb | rd) | bl (ac | az) | br (e | v) w | bumb | bw \-(n | u) | c55 \/| capi | ccwa | cdm \-| cell | chtm | cldc | cmd \-| co (mp | nd) | craw | da (it | ll | ng) | dbte | dc \-s | devi | dica | dmob | do (c | p) o | ds (12 | \-d) | el (49 | ai) | em (l2 | ul) | er (ic | k0) | esl8 | ez ([4-7] 0 | OS | wa | ze) | fetc | fly (\-| _) | g1 u | g560 | gene | gf \-5 | g \-mo | go (\. w | od) | gr (ad | un) | haie | hcit | hd \-(m | p | t) | hei \-| hi (pt | ta) | hp (I | ip) | hs \-c | ht (c (\-| _ | a | g | p | s | t) | tp) | hu (aw | tc) | I \-(20 | go | ma) | i230 | iac (| \-| \/) | ibro | idea | ig01 | ikom | im1k | inno | ipaq | iris | ja (t | v) a | jbro | jemu | jigs | kddi | keji | kgt (|\/) | klon | kpt | kwc \-| weight (c | k) | le (no | xi) | lg (g | \/(k | l | u) | 50 | 54 | \-[a-w]) | libw | lynx | m1 \-w | m3ga | m50 \/| ma (te | ui | xo) | mc (01 | 21 | ca) | m \-cr | me (rc | ri) | mi (o8 | oa | ts) | mmef | mo (01 | 02 | bi | de | do | t (\-| o | v) | zz) | mt (50 | p1 | v) | mwbp | mywa | n10 [0-2] | n20 [2-3] | n30 (0 | 2) | n50 (0 | 2 | 5) | n7 (0 (0 | 1) | 10) | ne (c | m) \-| on | tf | wf | wg | wt) | nok (6 | I) | nzph | o2im | op (ti | wv) | oran | owg1 | p800 | pan (a | d | t) | pdxg | pg (13 | \-([1-8] | c) | phil | pire | pl (ay | uc) | pn \-2 | po (ck | rt | se) | prox | psio | pt \-g | qa \-a | qc (07 | 12 | 21 | 32 | 60 | \-[2-7] | I \-) | qtek | r380 | r600 | raks | rim9 | ro (ve | zo) | s55 \/| sa (ge | ma | mm | MS | ny | va) | SC (01 | h \-| oo | p \-) | sdk \/| se (c (\-| 0 | 1) | 47 | mc | nd | ri) | sgh \-| shar | sie (\-| m) | sk \-0 | sl (45 | id) | sm (al | ar | b3 | it | t5) | so (ft | ny) | sp (01 | h \-| v) | sy (01 | mb) | t2 (18 | 50) | t6 (00 | 10 | 18) | ta (gt | lk) | tcl \-| tdg \-| tel (I | m) | tim \-| t \-mo | to (pl | sh) | ts (70 | m \-| m3 | m5) | tx \-9 | up (\. B | g1 | si) | utst | v400 | v750 | veri | vi (rg | te) | vk (40 | 5 [0-3] | \-v) | vm40 | voda | vulc | vx (52 | 53 | 60 | 61 | 70 | 80 | 81 | 83 | 85 | 98) | w3c (\-|) | webc | whit | wi (g | nc | nw) | wmlb | wonu | x700 | yas \-| your | zeto | zte \-/I ', substr ($ agent, 0, 4) {$ this-> data ['ismobile'] = true;} else {$ this-> data ['ispc'] = true ;} /// system check $ isUnix = $ isLinux = $ isMac = $ isAndroid = false; if (preg_match ('/win/I', $ agent )) {$ this-> data ['iswin'] = true; if (preg_match ('/nt 6.0/I', $ agent) {$ OS = 'windows Vista ';} else if (preg_match ('/nt 6.2/I', $ agent) {$ OS = 'windows 8';} else if (preg_match ('/nt 6.3/I ', $ agent) {$ OS = 'windows 10';} else if (preg_match ('/nt 6.1/I', $ agent )) {$ OS = 'windows 7';} else if (preg_match ('/nt 5.1/I', $ agent) {$ OS = 'windows XP ';} else if (preg_match ('/nt 5/I', $ agent) {$ OS = 'windows 2000 ';} else {$ OS = 'windows other ';}} else if (strpos ('linux ', $ agent) {if (strpos ('android', $ agent) {$ OS = 'android '; $ this-> data ['isandroid'] = true;} else {$ OS = 'linux '; $ this-> data ['islinux'] = true ;}} else if (strpos ('android', $ agent) {$ OS = 'android'; $ this-> data ['isandroid'] = true ;} else if (strpos ($ agent, "iphone") {$ OS = 'ios '; $ this-> data ['isios'] = true ;} else if (strpos ('ubuntu ', $ agent) {$ OS = 'ubuntu'; $ this-> data ['islinux'] = true ;} else if (strpos ('mac', $ agent) {$ OS = 'mac OS x'; $ this-> data ['ismac'] = true ;} else if (strpos ('unix ', $ agent) {$ OS = 'unix'; $ this-> data ['isunix '] = true ;} else if (strpos ('bsd', $ agent) {$ OS = 'bsd';} else if (strpos ('symbian ', $ agent )) {$ OS = 'symbian OS ';} else {$ OS = 'unknown';} $ this-> data ['OS'] = $ OS; /// browser check $ browser = 'unknown '; // myie if (strpos ($ agent, 'myie') {$ browser = 'myie '; // Netscape} else if (strpos ($ agent, 'netscape ') {$ browser = 'netscape'; // Opera} else if (strpos ($ agent, 'Opera ') {$ browser = 'Opera'; // netcaptor} else if (strpos ($ agent, 'netcaptor') {$ browser = 'netcaptor '; // TencentTraveler} else if (strpos ($ agent, 'tencenttraveler ') {$ browser = 'tencenttraveler'; // Firefox} else if (strpos ($ agent, 'Firefox ') {$ browser = 'Firefox'; // ie} else if (strpos ($ agent, 'msie ') {$ browser = 'ie '; // chrome} else if (strpos ($ agent, 'chromi') {$ browser = 'chromi';} $ this-> data ['browser'] = $ browser; return true;}/*** get client Ip * @ from web * @ return void */public function getIP () {if (getenv ('HTTP _ CLIENT_IP ')) {$ ip = getenv ('HTTP _ CLIENT_IP ');} elseif (getenv ('HTTP _ X_FORWARDED_FOR') {$ ip = getenv ('HTTP _ X_FORWARDED_FOR ');} elseif (getenv ('HTTP _ X_FORWARDED ') {$ ip = getenv ('HTTP _ x_forwarded');} elseif (getenv ('HTTP _ FORWARDED_FOR ')) {$ ip = getenv ('HTTP _ FORWARDED_FOR ');} elseif (getenv ('HTTP _ forwarded') {$ ip = getenv ('HTTP _ forwarded ');} else {$ ip = $ _ SERVER ['remote _ ADDR '];} return $ ip ;}// end class Client
  'Request _ SCHEME ', // $ _ SERVER ['path'] 'path' => 'path', // $ _ SERVER ['server _ Protocol'] PROTOCOL e.g. HTTP/1.1 'protocol' => 'server _ Protocol', // $ _ SERVER ['server _ signature'] SIGNATURE 'signature' => 'server _ signature ', // $ _ SERVER ['server _ ADDR '] 'addr' => 'server _ addr ', // $ _ SERVER ['server _ port'] 'Port' => 'server _ port ', // $ _ SERVER ['server _ name'] 'name' => 'server _ name', // $ _ SERVER ['server _ soft'] 'softwa Re' => 'server _ soft', // $ _ SERVER ['document _ root'] 'docroot' => 'document _ root ', // $ _ SERVER ['script _ filename'] 'scriptfile' => 'script _ filename ', // $ _ SERVER ['script _ name'] 'script' => 'script _ name ', // $ _ SERVER ['php _ SELF '] 'self' => 'php _ self ',]; public function init () {parent: init (); // $ this-> data ['uris '] = rtrim ($ this-> data ['uris'], '? & '); // $ This-> data ['rooturl'] = $ this-> scheme. ':/'. '/'. $ this-> name; // $ this-> data ['Referer'] =! Empty ($ _ SERVER ['HTTP _ referer'])? $ _ SERVER ['HTTP _ referer']: $ this-> rootUrl; // $ this-> data ['entryurl'] = $ this-> rootUrl. $ this-> script; // $ this-> data ['currenturl'] = $ this-> isUrl ($ this-> uri )? $ This-> uri: $ this-> rootUrl. $ this-> uri; $ this-> data ['workdir'] = getcwd (); $ this-> data ['entry '] = $ this-> getEntry (); $ this-> data ['root'] = $ this-> getRoot (); $ this-> data ['iscl'] = $ this-> isCli (); $ this-> data ['isweb'] = $ this-> isWeb (); // operate system $ this-> data ['uname'] = PHP_ OS; $ this-> data ['OS'] = strtoupper (substr ($ this-> data ['uname'], 0, 3 )); $ this-> data ['iswin'] = ($ this-> data ['OS'] =' WIN '); $ this-> data ['islinux'] = ($ this-> data ['OS'] = 'line '); $ this-> data ['isunix '] = $ this-> isUnix ();} /*** getEntry * @ param bool $ full * @ return string */public function getEntry ($ full = true) {$ key = $ full? 'Scriptfile': 'script'; $ wdir = $ this-> data ['workdir']; $ file = $ this-> data [$ key]; if (strpos ($ file, $ wdir) == 0) {$ file = substr ($ file, strlen ($ wdir);} $ file = trim ($ file, '. '. DIRECTORY_SEPARATOR); if ($ full & $ this-> isCli () {$ file = $ wdir. DIRECTORY_SEPARATOR. $ file;} return $ file;}/*** @ param boolean $ full * @ return string */public function getRoot ($ full = true) {return dirname ($ this-> getEntry ($ full);}/*** isWeb * @ return boolean */public function isWeb () {return in_array (PHP_SAPI, array ('apache', 'cgi ', 'fast-cgi', 'cgi-fcgi ', 'srv '));} /*** isCli * @ return boolean */public function isCli () {return in_array (PHP_SAPI, array ('cl', 'cli-Server '));} /*** isUnix ** @ see https://gist.github.com/asika32764/90e49a82c124858c9e1a * @ Return bool */public function isUnix () {$ unames = array ('cyg', 'dar', 'fre', 'hp-', 'io ', 'lin', 'net', 'ope', 'sun', 'uni '); return in_array ($ this-> data [' OS '], $ unames );} /*** check url string * @ param string $ str * @ return boolean */public function isUrl ($ str) {$ rule = '/^ (http | https | ftp): \/([A-Z0-9] [A-Z0-9 _-] * (?: \. [A-Z0-9] [A-Z0-9 _-] *) + ):? (\ D + )? \/? /I '; return preg_match ($ rule, $ str) === 1 ;}// end class Server

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.