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