我正在为Facebook粉丝页面创建一个民意调查脚本:
http://www.facebook.com/apps/application.php?id=115400635147687&v=app_115400635147687
我正在使用IP:
$_SERVER['REMOTE_ADDR']
但问题是每次刷新页面或进行ajax调用时,IP都会随时更改。有人告诉我facebook有很多IP代理。
基本上我需要在数据库中保存IP,这样一旦来自某个IP的用户投票,他就不应该再这样做了。
这是什么解决方案或替代方案?
答案 0 :(得分:3)
通过IP阻止并不是一种可靠的做事方式(需要考虑人们共享相同的公共IP)。由于它是一个Facebook应用程序,你不能改为通过登录的Facebook帐户阻止吗?
答案 1 :(得分:2)
我假设链接页面顶部的IP是您正在处理的内容。如果我们做一个whois:
$ whois 69.63.181.250 OrgName: Facebook, Inc. OrgID: THEFA-3 Address: 1601 S. California Ave City: Palo Alto StateProv: CA PostalCode: 94304 Country: US NetRange: 69.63.176.0 - 69.63.191.255 CIDR: 69.63.176.0/20
我们发现这些IP属于Facebook的服务器,而不属于您的用户。
如果我理解正在发生的事情,当有人从您的应用程序请求页面时,Facebook的服务器会代表他们向您请求。在这种情况下,您将无法获得用户的IP。
答案 2 :(得分:2)
请注意,在Facebook中开发粉丝页面时,Facebook服务器基本上充当代理。也就是说,用户的浏览器向Facebook询问页面,然后Facebook的服务器向您的网站请求获取内容。 Facebook服务器然后重写所有链接和Javascript,以便任何回调首先通过Facebook服务器。
最后,这意味着您永远不会在服务器上看到用户的“实际”IP地址:您只会看到Facebook的IP地址。
这是出于隐私原因,我理解。也就是说,用户必须明确允许您的应用程序访问其个人资料,然后才能获得有关他们的任何“可识别”信息。
答案 3 :(得分:1)
我终于找到了完美的解决方案。基本上当你做ajax帖子时,你可以使用:
获取用户的id$_POST['fb_sig_user']