I have talked previously about getting an IP address of a visitor with PHP. The failing in using the value of $_SERVER["REMOTE_ADDR"] is that if the visitor is using a proxy then you will get the proxy IP address and not the visitors real IP address.
This function works by going through any variables in the $_SERVER array that might exist that would contain information to do with IP addresses. If they are all empty then the function finally looks at $_SERVER["REMOTE_ADDR"] value and returns this as a default.
function getRealIpAddr(){
if ( !empty($_SERVER['HTTP_CLIENT_IP']) ) {
// Check IP from internet.
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
// Check IP is passed from proxy.
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
// Get IP address from remote address.
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
To run this function just call it.
echo getRealIpAddr();
Comments
Hi, How can I get the URLs and page title of a visitor through PHP...
Thanks in advance.
Please note: A user can specify whatever they like for 'X-Forwarded-For' so could claim to be from whatever source IP they want,
its true some proxy servers will put the real IP here, but you can really put whatever you want there (even something thats not even an IP Address..)