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

JavaScript016

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)。

html网页判断访问用户的地区并根据地区做出不同反应解决方案

1、在html代码中使用ajax异步数据请求方式完成

通过js代码

<script type="javascript" >

document.getElementById("selectId")获取选择用户的地区值

1)先调用ajax的get("获取用户地区的url地址"),返回地区类型

2)判断地区类型

a 如果是国外的地区,通过js地址跳转到国外的地址

window.localtion.href="国外的地址"

b 如果是国内的地区,通过js地址跳转到国内的地址

window.localtion.href="国内的地址"

你明白了吗?

如果要做到全国通用。估计有点问题。毕竟身份证是与个人的信息相互对应的。除非走专业的通道去校验!!如果只是简单判断身份证是否合法有效,可以参考一下身份证号码的构造结构。

首先看看身份证是怎么构造的:

首先:

1)地区代码:表示出生地,上图为北京市朝阳区

2)出生日期:不解释,只要合理就好

3)顺序号:最后一位为奇数表示性别男,偶数性别女

4)校验位:这是系统验证比较关键的一位,由前面17位通过公式计算得出,具体公式在此不做讨论,因为其结果为数字0~9或者字母X

这些条件都知道了。

就可以开始了:

//首先最迟判断身份证号码的位数(18)

var CardNumber=""//待验证的身份证号码

var iscard=/^\d{17}([0-9]|X)$/

if(iscard.text(CardNumber)){

  //验证身份证的"地区代码(前6位数字,这里需要搜集各个地区的代码...)"

  if(这里校验地区代码){

     if(这里校验出生日期){

       //校验出生日期时,会牵扯到日历算法(计算某年的某月有多少天,防止用户随意输入大于31的日期)

       //如果判断到这里了,就可以初步确定为"合法有效"的身份证号码了。

       //因为“校验位”相对而言较复杂。如果楼主有意思。可以百度找资料。

     }

  }

}