在PHP中有一种简单的方法可以做到这一点。我想确保只有来自某些国家的网络请求才能访问我的网站。
有什么想法吗?
使用IP地理位置数据库(有些是免费的)和$_SERVER["REMOTE_ADDR"]来获取访问者的IP地址。
http://www.maxmind.com/app/geolitecity是商业版的免费(不太准确)版本。
和Gilles一样,我过去也使用过MaxMind的GeoIP技术——为了提高速度,我配置了PECL扩展。它运行得相当好,但是。。。
对这类事情的要求往往来自于那些不明白以这种方式不可能可靠地确定游客位置的人。非常重要的是,鼓励要求它的人明白它几乎是无用的。地理位置的典型情况:
客户端:我希望能够通过IP限制内容
德夫:你知道那是不可能可靠的吗
客户:啊,是的,但这家公司说他们会卖给我一些可以做到的东西
Dev:是的,但它不准确,很容易规避,通常表明基于互联网的内容的商业模式很差
客户:你能做到吗
德夫:随便。。。
六个月后。。。
客户:我的一些访客一直在抱怨他们看不到我的内容,而一些不该看的坏人却能看到
Dev:/me拍头
从那里到只需一步"我可以拥有它吗?这样,当用户右键点击浏览器时,会弹出一个小标志,上面写着‘这些图像版权归Idiot股份有限公司所有’?"
抱歉,今天显然是愤世嫉俗!
这两个答案(地理位置、用户代理)都有效,但可能会失败。有些人可以使用代理服务器,或者更改其用户代理。Firefox甚至有一个用于此目的的插件。
如果您使用Ben Dowling的答案,但代码不起作用,请尝试以下操作:
if (!in_array(substr($country, 0, 2), $allowed_countries)) {
而不是:
if(!in_array($country, $allowed_countries)) {
还有一个梨包装
http://pear.php.net/package/Net_Geo
有些类可以检测用户代理的区域设置。试试这样的东西。Zend Framework为这个Zend_Locale 提供了一个很棒的类