如果用户来自特定位置,请隐藏javascript

时间:2014-03-15 15:44:06

标签: javascript php

如果用户允许来自中国,我希望隐藏javascript文件(<script src=" file here " >)。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用geolocation service,但考虑到您可以通过在其他地方使用代理(例如美国的黑客机器)或通过欺骗请求看起来像来自给定位置的请求来打败它最后你不是很好。

答案 1 :(得分:1)

我是中国人,我保留所有抗议权利。 :)

实际上你有几个选择,你可以做前端或后端。

前端解决方案

使用HTML5 Geolocation确定当前用户的经度和纬度,并检查它是否在中国境内(不要忘记包含台湾)。缺点是只支持现代浏览器,您应该设置计划B.

//jQuery, ip-api is a RESTful service, do it in front-end
$.getJSON('http://ip-api.com/json/?callback=?', function(response){
    alert(response.country);
    if(response.country === "China"){
        $.getScript("script_for_Chinese.js");
    }
});

后端解决方案

  1. 检查用户IP并查明它是否来自中国(有一堆IP to location RESTful服务)
  2. 如果Accept-Language部分包含zh-CNzh-TW等字符串,请检查HTTP标头。这也可能会伤害在其他国家使用中文的人。
  3. 根据要求,我不建议您使用前端解决方案或IP-to-location后端解决方案。唯一可行的方法是基于http标头。

    //PHP, if the client accept Chinese, assume he is from China
    if(preg_match('/(zh-CN|zh-TW|zh)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])){
        echo '<script src="script_for_Chinese.js" type="text/javascript"></script>';
    }