php程序 js判断ip地区根据不同ip输出不同内容(商务通代码)

JavaScript017

php程序 js判断ip地区根据不同ip输出不同内容(商务通代码),第1张

不建议使用js进行这个处理,你这样做的话完整过程为

1. 用户访问php页面

2. 服务端输出html

3. 浏览器运行js检查ip所属区域

4. ajax方式提交区域信息给服务器

5. 服务器返回查询结果

6. js将查询结果显示到当前页面

你想想这要多长时间。因此最好是php端直接判断区域,然后直接查询并输出就行了。

提供一个php写的函数,如果有用望采纳

function getCityByUserIp() {

    $ip = false

    if (isset($_SERVER)){

        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){

            $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]

        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {

            $ip = $_SERVER["HTTP_CLIENT_IP"]

        } else {

            $ip = $_SERVER["REMOTE_ADDR"]

        }

    } else {

        if (getenv("HTTP_X_FORWARDED_FOR")){

            $ip = getenv("HTTP_X_FORWARDED_FOR")

        } else if (getenv("HTTP_CLIENT_IP")) {

            $ip = getenv("HTTP_CLIENT_IP")

        } else {

            $ip = getenv("REMOTE_ADDR")

        }

    }

    if (false === $ip) {

        return false

    }

    $file = fopen('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip, 'r')

    $content = fread($file, 1024)

    fclose($file)

    if (! preg_match("/^var remote_ip_info = (\\{[^\\}]+\\})$/", $content, $_match)) {

        return false

    }

    $ipInfo = json_decode($_match[1])

    return $ipInfo

}

返回的数组中包括 country, province, city等,如果返回false表示无法获得ip或该ip没有在大陆地区匹配的记录(港澳台似乎有province,但是没有city)。

指定ip段,跳转页面的js代码,根据限定地域,页面在识别该地区ip后自动跳转,效率很高,不在指定ip段内的,正常访问原来页面,没有影响。

<script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" charset="GB2312" ></script>

<script type=text/javascript>

alert("你的IP是:" + remote_ip_info.province)

if(remote_ip_info.province =='安徽'||remote_ip_info.province =='江苏'){

window.location.href="http://boaer.com"

}else{

window.location.href="http://boaer.com"

}

</script>