简明现代魔法 -> PHP服务器脚本 -> PHP判断来访国内外IP

PHP判断来访国内外IP

2009-12-17

此类可以判断某个IP地址是属于国内IP,还是国外IP,仔细挖掘一下可以应用到某些特殊需求的网站上 :)

您本地的IP: 54.224.50.28 在国外
请输入IP地址:

最近做了公司网站的一个需求:按来访人的IP来判断他是进中文网站还是英文网站。

我大概构思了一下,有两个方案:

1. Javascript判断来访者的浏览器语言,如果是中文系统,自然使用者都是中国人,跳中文网站; 如果是非中文系统,默认使用者非中国人,跳英文网站。

优点:判断反映速度快。

缺点:不准确,有可能中国用户喜欢用英文版系统,或者外国人使用中文系统的情况。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" language="javascript">
  var Browser_Agent = navigator.userAgent;
    //浏览器为ie的情况
    if(Browser_Agent.indexOf("MSIE")!=-1){
        var a=navigator.browserLanguage;
        if(a !="zh-cn"){
            location.href="英文网站";
			document.write("国外IP");
        } else 
			document.write("国内IP");
    }
    //浏览器非ie的情况
    else{
        var b=navigator.language;
        if(b!="zh-CN"){
            location.href="英文网站";
			document.write("国外IP");
        } else 
			document.write("国内IP");
    }

</script>  

查看示例

2.使用IP库来进行来访IP的判断

优点:判断准确。

缺点:响应速度没Javascript快。

需要引用一个PHP的IP库:ip.zip

我在网站头部引用jquery进行判断

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" language="javascript">
        function initurl() {
            $.ajax({
                type:"GET",
                url:"checkip.php",
                dataType:"html",
                data:"&time="+new Date(),
                cache: false,
                async: false,
                beforeSend:function(XMLHttpRequest) {

                },
                success:function(msg) {
                    //如果返回值为1表示访问者为中国地区的ip
                    if(msg == 1){
                       alert('国内IP');        
                    }
                    else {
                       alert('国外IP');
                       //location.href="英文网站"; 
                       
                    }
                },
                complete:function(XMLHttpRequest,textStatus) {

                },
                error:function() {

                }
            });
        }
   
</script>

<body  onload="initurl()">

</body>  

checkip.php

<?php
$userip=$_SERVER['REMOTE_ADDR'];
//引用ip库的文件 把ip.zip里的全部文件放在lib目录下
include_once('lib/iplimit.class.php');
$iplimit = new iplimit;

if($iplimit->setup($userip))
{
    echo 1;
}
else
{
    echo 2;
}
?>  

查看示例

两种方法都可以完美实现判断来访IP,选择哪种就看你的具体需求了。

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们