每次获取不同的IP

时间:2010-04-23 07:00:27

标签: php facebook fan-page

我正在为Facebook粉丝页面创建一个民意调查脚本:

http://www.facebook.com/apps/application.php?id=115400635147687&v=app_115400635147687

我正在使用IP:

$_SERVER['REMOTE_ADDR']

但问题是每次刷新页面或进行ajax调用时,IP都会随时更改。有人告诉我facebook有很多IP代理。

基本上我需要在数据库中保存IP,这样一旦来自某个IP的用户投票,他就不应该再这样做了。

这是什么解决方案或替代方案?

4 个答案:

答案 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']
相关问题