function getip($dots = 4)
{
    $ips = array();
    $indices = array('REMOTE_ADDR', 'HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP');
    foreach ($indices as $index) {
        // $_SERVER is sometimes for a windows server which can't handle getenv()
        $tip = @getenv($index);
        if (!empty($tip)) {
            $ips[] = $tip;
        }
        if (!empty($_SERVER[$index])) {
            $ips[] = $_SERVER[$index];
        }
    }
    $private_ips = array("/^0\\..+\$/", "/^127\\.0\\.0\\..+\$/", "/^192\\.168\\..+\$/", "/^172\\.16\\..+\$/", "/^10..+\$/", "/^224..+\$/", "/^240..+\$/", "/[^\\d\\.]+/");
    $ips = array_unique($ips);
    foreach ($ips as $ip) {
        $found = false;
        if (!preg_match("/[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}/", $ip)) {
            $found = true;
        }
        foreach ($private_ips as $pip) {
            if (preg_match($pip, trim($ip))) {
                $found = true;
            }
        }
        if ($found == false) {
            return ext_iptrim(trim($ip), $dots);
        }
    }
    $b = _EnvValToInt('HTTP_USER_AGENT');
    $c = _EnvValToInt('HTTP_ACCEPT');
    $d = _EnvValToInt('HTTP_ACCEPT_LANGUAGE');
    $ip = "0.{$b}.{$c}.{$d}";
    return ext_iptrim($ip, $dots);
}
function getip($dots = 4)
{
    $ips = array();
    $indices = array('REMOTE_ADDR', 'HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP');
    foreach ($indices as $index) {
        // $_SERVER is sometimes for a windows server which can't handle getenv()
        $tip = @getenv($index);
        if (!empty($tip)) {
            $ips[] = $tip;
        }
        if (!empty($_SERVER[$index])) {
            $ips[] = $_SERVER[$index];
        }
    }
    $ips = array_unique($ips);
    foreach ($ips as $ip) {
        $found = !check_ip($ip);
        if ($found == false) {
            return ext_iptrim(trim($ip), $dots);
        }
    }
    $b = _EnvValToInt('HTTP_USER_AGENT');
    $c = _EnvValToInt('HTTP_ACCEPT');
    $d = _EnvValToInt('HTTP_ACCEPT_LANGUAGE');
    $ip = "0.{$b}.{$c}.{$d}";
    return ext_iptrim($ip, $dots);
}
function getip($dots = 4)
{
    $ips = array();
    // $_SERVER is sometimes for a windows server which can't handle getenv()
    if (@getenv("REMOTE_ADDR")) {
        $ips[] = @getenv("REMOTE_ADDR");
    }
    if (isset($_SERVER["REMOTE_ADDR"])) {
        $ips[] = $_SERVER["REMOTE_ADDR"];
    }
    if (@getenv("HTTP_X_FORWARDED_FOR")) {
        $ips[] = getenv("HTTP_X_FORWARDED_FOR");
    }
    if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
        $ips[] = $_SERVER["HTTP_X_FORWARDED_FOR"];
    }
    if (@getenv("HTTP_CLIENT_IP")) {
        $ips[] = getenv("HTTP_CLIENT_IP");
    }
    if (isset($_SERVER["HTTP_CLIENT_IP"])) {
        $ips[] = $_SERVER["HTTP_CLIENT_IP"];
    }
    $private_ips = array("/^0\\..+\$/", "/^127\\.0\\.0\\..+\$/", "/^192\\.168\\..+\$/", "/^172\\.16\\..+\$/", "/^10..+\$/", "/^224..+\$/", "/^240..+\$/", "/[^\\d\\.]+/");
    $ips = array_unique($ips);
    foreach ($ips as $ip) {
        $found = false;
        foreach ($private_ips as $pip) {
            if (preg_match($pip, trim($ip)) == 1) {
                $found = true;
            }
        }
        if ($found == false) {
            return ext_iptrim(trim($ip), $dots);
        }
    }
    $b = _EnvValToInt('HTTP_USER_AGENT');
    $c = _EnvValToInt('HTTP_ACCEPT');
    $d = _EnvValToInt('HTTP_ACCEPT_LANGUAGE');
    $ip = "0.{$b}.{$c}.{$d}";
    return ext_iptrim($ip, $dots);
}