2010-04-23 4 views
0

Je crée un script de sondage pour une fan page facebook:Comment s'y rendre IP différentes à chaque fois

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

Je reçois l'IP en utilisant:

$_SERVER['REMOTE_ADDR'] 

Mais le problème est que chaque fois J'actualise la page, ou faire un appel ajax, l'adresse IP est changée à chaque fois. Quelqu'un m'a dit que Facebook a beaucoup d'adresses IP, proxy. Fondamentalement, j'ai besoin d'enregistrer l'adresse IP dans la base de données, de sorte que, une fois qu'un utilisateur de certaines IP a voté, il ne devrait pas être en mesure de le faire à nouveau.

Quelle est la solution ou l'alternative à ceci?

+1

Alors qu'en est-il des utilisateurs derrière NAT? –

+0

Qu'est-ce que NAT ???????? – Sarfraz

+0

http://en.wikipedia.org/wiki/Network_address_translation –

Répondre

3

Le blocage par IP n'est pas vraiment une manière fiable de faire les choses (il faut prendre en compte les personnes partageant la même IP publique). Puisqu'il s'agit d'une application Facebook, ne pouvez-vous pas bloquer à la place par le compte Facebook connecté?

+0

@Amry: Je n'ai pas réussi à trouver le moyen d'obtenir l'identifiant facebook, car il n'y a pas de journalisation nécessaire pour cela. – Sarfraz

+1

Vous ne pouvez obtenir les informations de profil Facebook d'un utilisateur que si l'utilisateur autorise explicitement votre application à y accéder. Sinon, tout accès à votre application est essentiellement "anonyme" et Facebook fait de grands efforts pour s'assurer que vous ne pouvez pas dire à un utilisateur d'un autre ... –

2

Je suppose que l'adresse IP en haut de la page liée est ce que vous avez affaire. Si nous faisons un 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

Nous trouvons que ces IP appartiennent à des serveurs de Facebook, pas à vos utilisateurs.

Si je comprends bien ce qui se passe, lorsque quelqu'un demande une page de votre application, les serveurs de Facebook la demandent à vous en leur nom. Dans ce cas, vous ne pourrez tout simplement pas obtenir les adresses IP de vos utilisateurs.

+0

... et la restriction par IP empêcherait les utilisateurs légitimes de voter comme ils peuvent avoir leur demande traitée par un proxy précédemment utilisé par un autre utilisateur –

2

Notez que lors du développement d'une page fan sur Facebook, les serveurs Facebook agissent essentiellement comme un proxy. C'est-à-dire que le navigateur de l'utilisateur demande à Facebook la page, puis les serveurs de Facebook font une demande à votre site Web pour obtenir le contenu. Le serveur Facebook réécrit alors tous les liens et Javascript pour que les rappels passent d'abord par les serveurs Facebook. En fin de compte, cela signifie que jamais verrez l'adresse IP «réelle» de l'utilisateur sur votre serveur: vous ne verrez que les adresses IP de Facebook.

Ceci est fait pour des raisons de confidentialité, si je comprends bien. Autrement dit, l'utilisateur devra autoriser explicitement votre application à accéder à son profil avant de pouvoir obtenir des informations "identifiables" à son sujet.

1

J'ai finalement trouvé la solution parfaite. Fondamentalement, quand vous faites poste ajax, vous pouvez obtenir l'identifiant de l'utilisateur à l'aide:

$_POST['fb_sig_user'] 

Merci à vous tous pour vos réponses. Avoir une bonne journée/nuit à venir :)

Questions connexes