Déterminer l’adresse IP du site référent

Je travaille actuellement sur un module marketing permettant de suivre les sites qui génèrent du trafic sur notre site. Existe-t-il un moyen d’obtenir le domaine ou l’adresse IP du site référent en utilisant PHP? Je crois que HTTP_REFERER ne s’affiche pas toujours sur le global $ _SERVER.

Merci d’avance.

L’en HTTP_REFERER tête HTTP_REFERER doit être envoyé par le navigateur du client. Vous ne pouvez pas compter sur l’envoi.

Les scénarios qui ne sont pas envoyés incluent:

  • L’utilisateur entre l’adresse à la main
  • L’utilisateur ouvre un lien dans l’un des gros clients E-Mail qui font de grands efforts pour masquer le REFERER
  • Le navigateur de l’utilisateur est configuré pour bloquer l’en-tête du référent (rare)
  • L’utilisateur change de protocole (c.-à-d. Un lien sur un site http pointant vers un site https, ou vice versa)

Dans ces cas, vous ne pouvez rien faire.

Si vous contrôlez le site de liaison, vous pouvez append un ID de référent dans le paramètre GET au lien:

 http://example.com/?from=mysite 

Vous pouvez ensuite parsingr le paramètre from dans votre script.

Convertir la chaîne de référence à une adresse IP n’est généralement pas une bonne idée, car de nombreuses adresses IP hébergent des dizaines ou des centaines de sites. La distinction entre le site d’origine de l’utilisateur sera perdue.

L’adresse de référence est présente dans l’en-tête de requête de tous les navigateurs coopérants pour lesquels il existe un référent. Si l’utilisateur vient de taper votre URL, il n’y a pas de référent.

Convertir l’URL en une adresse IP est une question de programmation sortingviale:

  

Si HTTP_REFERER ne s’affiche pas sur le serveur, cet utilisateur n’a pas accédé à votre site par un lien, ou il a un moyen de masquer cette variable via son navigateur. Pas grand chose que vous puissiez faire.

Si elle n’apparaît pas dans $ _SERVER, cela signifie généralement que le client ne l’envoie pas. Le référent est des données qui ne peuvent pas être fiables pour leur exactitude, car il appartient entièrement à l’utilisateur (plus précisément à son navigateur).

Votre meilleur pari est de vérifier si le référent est présent, puis utilisez la fonction gethostbyname () sur le domaine pour obtenir l’adresse IP souhaitée.

http://php.net/manual/en/function.gethostbyname.php

Vous pouvez déterminer l’URL de redissortingbution avec $_SERVER['HTTP_REFERER'] mais gardez à l’esprit que cela peut être manipulé.

Vous pouvez ensuite utiliser gethostbyname($referrer) pour obtenir l’adresse IP.

Voir: http://php.net/manual/en/reserved.variables.server.php et http://php.net/manual/en/function.gethostbyname.php