<?

function security_getIP()
{
    
$REMOTE_ADDR = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
    
$HTTP_X_FORWARDED_FOR = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
    
$HTTP_X_FORWARDED = isset($_SERVER['HTTP_X_FORWARDED']) ? $_SERVER['HTTP_X_FORWARDED'] : '';
    
$HTTP_FORWARDED_FOR = isset($_SERVER['HTTP_FORWARDED_FOR']) ? $_SERVER['HTTP_FORWARDED_FOR'] : '';
    
$HTTP_FORWARDED = isset($_SERVER['HTTP_FORWARDED']) ? $_SERVER['HTTP_FORWARDED'] : '';
    
$HTTP_VIA = isset($_SERVER['HTTP_VIA']) ? $_SERVER['HTTP_VIA'] : '';
    
$HTTP_X_COMING_FROM = isset($_SERVER['HTTP_X_COMING_FROM']) ? $_SERVER['HTTP_X_COMING_FROM'] : '';
    
$HTTP_COMING_FROM = isset($_SERVER['HTTP_COMING_FROM']) ? $_SERVER['HTTP_COMING_FROM'] : '';

    
// Gets the default ip sent by the user
    
if (!empty($REMOTE_ADDR)) {
        
$direct_ip $REMOTE_ADDR;
    }

    
// Gets the proxy ip sent by the user
    
$proxy_ip     '';
    if (!empty(
$HTTP_X_FORWARDED_FOR)) {
        
$proxy_ip $HTTP_X_FORWARDED_FOR;
    } elseif (!empty(
$HTTP_X_FORWARDED)) {
        
$proxy_ip $HTTP_X_FORWARDED;
    } elseif (!empty(
$HTTP_FORWARDED_FOR)) {
        
$proxy_ip $HTTP_FORWARDED_FOR;
    } elseif (!empty(
$HTTP_FORWARDED)) {
        
$proxy_ip $HTTP_FORWARDED;
    } elseif (!empty(
$HTTP_VIA)) {
        
$proxy_ip $HTTP_VIA;
    } elseif (!empty(
$HTTP_X_COMING_FROM)) {
        
$proxy_ip $HTTP_X_COMING_FROM;
    } elseif (!empty(
$HTTP_COMING_FROM)) {
        
$proxy_ip $HTTP_COMING_FROM;
    } 
// end if... elseif...

    // Returns the true IP if it has been found, else FALSE
    
if (empty($proxy_ip)) {
        
// True IP without proxy
        
return $direct_ip;
    } else {
        
$is_ip preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|'$proxy_ip$regs);
        if (
$is_ip && (count($regs) > 0)) {
            
// True IP behind a proxy
            
return $regs[0];
        } else {
            
// Can't define IP: there is a proxy but we don't have
            // information about the true IP
            
return FALSE;
        }
    } 
// end if... else...
// end of the 'getIp()' function


highlight_file(__FILE__);

?>