如果国家是澳大利亚,需要设置会话

时间:2011-09-01 16:18:28

标签: php ip

如何查看该国家是否是澳大利亚?如果国家是澳大利亚,我需要设置一个会话。

207.209.7.0   | 207.209.7.255 

这是澳大利亚的IP范围。

如何在没有数据库的情况下使用$_SERVER['REMOTE_ADDR'],只需使用简单的if语句

3 个答案:

答案 0 :(得分:1)

首先,你应该知道这不能保证。人们可以绕过它,数据永远不会100%完成等等。

简单地检查IP块是不可接受的。您需要使用地理分析数据库,例如MaxMind's GeoIP。免费数据库足以用于国家级地理位置。

答案 1 :(得分:0)

查看this question有关如何在php中检测某人的位置的信息。然后添加你的条件。

由于您不想使用数据库,我建议

$doc->loadXML(file_get_contents("http://api.ipinfodb.com/v2/ip_query.php?key=your_key&ip=" . $_SERVER['REMOTE_ADDR'] . "&timezone=false")); 

$country = $doc->getElementsByTagName('CountryName')->item(0)->nodeValue;

if ($country == 'australia') {

    // set session
}

答案 2 :(得分:0)

如果你完全知道有效IP地址的范围,你可以这样做:

function ip2number($IP) {
    $parts = explode('.', $IP);
    if(count($parts) != 4) return 0;
    return ($parts[3] + $parts[2] * 256 + $parts[1] * 256 * 256 + $parts[0] * 256 * 256 * 256);
}

$num = ip2number($_SERVER['REMOTE_ADDR']);
if($num >= ip2number('207.209.7.0') && $num <= ip2number('207.209.7.255')) {
    echo "Valid";
}

就像布拉德所说的那样,它并不能保证并且有很多方法,你必须及时了解有效的IP地址范围。