在PHP中有一种简单的方法可以做到这一点。我想确保只有来自某些国家/地区的网络请求才能访问我的网站。
有什么想法吗?
答案 0 :(得分:13)
使用IP地理位置数据库(有些是免费的)和$ _SERVER [“REMOTE_ADDR”]来获取访问者的IP地址。
http://www.maxmind.com/app/geolitecity是商业版的免费(不太准确)版本。
答案 1 :(得分:9)
与Gilles一样,我过去曾使用过MaxMind的GeoIP内容 - 配置了PECL扩展速度。它运作得相当好,但是......
对此类事物的要求往往来自某些人,他们不了解以这种方式无法可靠地确定访客位置。要求鼓励人们理解它几乎无用是非常重要的。在这里发生地理位置的典型事情是:
客户:我希望能够通过IP限制内容 开发:你知道这是不可能做到的吗? 客户:啊,是的,但这家公司说他们会卖给我一些能做到这一点的东西 开发:是的,但它不准确,容易规避,通常表明基于互联网的内容的商业模式不佳 客户:你能做到吗? 开发:无论如何......
......六个月后......
客户:我的一些访问者一直在抱怨他们看不到我的内容和一些不应该看到它的坏人! Dev:/我拍头
从那里只有一步到“我可以拥有它,以便当用户右键点击他们的浏览器时会弹出一个小符号,表示'这些图像是Idiot公司的版权所有。'?“
对不起,今天显然是愤世嫉俗的心情!
答案 2 :(得分:4)
这两个答案(地理位置,用户代理)都可以使用,但可以打败。有人可以使用代理服务器,或更改其用户代理。 Firefox甚至还有一个插件用于此目的。
答案 3 :(得分:2)
如果你使用Ben Dowling的答案并且代码不起作用,试试这个:
if (!in_array(substr($country, 0, 2), $allowed_countries)) {
而不是:
if(!in_array($country, $allowed_countries)) {
答案 4 :(得分:1)
答案 5 :(得分:-2)
某些类可以检测用户代理的区域设置。尝试类似的东西。 Zend Framework为Zend_Locale提供了一个很棒的类