In-depth analysis of PHP client IP address acquisition method
- Function getip (){
- $ Unknown = 'unknown ';
- If (isset ($ _ SERVER ['http _ X_FORWARDED_FOR ']) & $ _ SERVER ['http _ X_FORWARDED_FOR '] & strcasecmp ($ _ SERVER ['http _ X_FORWARDED_FOR'], $ unknown )){
- $ Ip = $ _ SERVER ['http _ X_FORWARDED_FOR '];} elseif
- (Isset ($ _ SERVER ['remote _ ADDR ']) & $ _ SERVER ['remote _ ADDR '] & strcasecmp ($ _ SERVER ['remote _ ADDR'], $ unknown )){
- $ Ip = $ _ SERVER ['remote _ ADDR '];
- }
- /* When processing multi-layer proxies or using regular expressions: $ ip = preg_match ("/[/d/.] {7, 15}/", $ ip, $ matches )? $ Matches [0]: $ unknown ;*/
- If (false! = Strpos ($ ip ,','))
- $ Ip = reset (explode (',', $ ip); return $ ip;
- }
-
Note: Using the getenv ('http _ X_FORWARDED_FOR ') function or getenv ('remote _ ADDR') function can achieve the same effect as the code above. However, getenv () does not support PHP running in IIS isapi mode. |