How to get the client ip address in php
1. If a proxy server is not used
REMOTE_ADDR = Client IP HTTP_X_FORWARDED_FOR = No value or not displayed (recommended learning: PHP video tutorial)
$ip = $_SERVER['REMOTE_ADDR'];
2. Use transparent proxy
REMOTE_ADDR = Last proxy server IP
HTTP_X_FORWARDED_FOR = Client real IP (when passing through multiple proxy servers, this value is similar: 221.5.252.160, 203.98.182.163, 203.129.72.215)
This type of proxy will also send the client's real IP to the request object, and the real IP cannot be hidden.
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
3. Use ordinary anonymous proxy server
REMOTE_ADDR = Last proxy server IP
HTTP_X_FORWARDED_FOR = Proxy server IP (When passing through multiple proxy servers, this value is similar: 203.98.182.163, 203.98.182.163, 203.129.72.215)
This hides the client’s real IP, but the server will know that the client goes through the proxy server accessed.
4. Use deceptive proxy server
REMOTE_ADDR = Proxy server IP
HTTP_X_FORWARDED_FOR = Random IP (When passing through multiple proxy servers, this value is similar: 220.4.251.159, 203.98.182.163, 203.129.72.215)
The server can identify the access through the proxy server, but the false IP sent to the target server .
5. Use a high-anonymity proxy
REMOTE_ADDR = Proxy server IP HTTP_X_FORWARDED_FOR = No value or not displayed
Use this When using different proxies, different browsers and different devices will return different IP header information, so the value obtained by PHP using $_SERVER["REMOTE_ADDR"] and $_SERVER["HTTP_X_FORWARDED_FOR"] may be a null value or an "unknown" value.
PHP obtains the ip code as follows:
public function ip() { //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } $res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; echo $res; //dump(phpinfo());//所有PHP配置信息 }
The above is the detailed content of How to get the client ip address in php. For more information, please follow other related articles on the PHP Chinese website!