web-dev-qa-db-fra.com

Comment sélectionner uniquement le domaine racine à partir de $ _SERVER ['HTTP_REFERER'] ;?

Je veux avoir une page 404 qui peut détecter si un utilisateur est venu sur cette page via mon site, via mon URL raccourcie ou via un autre site, et je le fais en utilisant PHP. Je commence lentement à comprendre PHP et cela pourrait bien être une question simple, mais je suis assez fatigué pour être honnête et je n'ai pas de caféine dans mon système, et je veux bloquer tout extrémités lâches dans mon portefeuille dès que possible.

J'ai trouvé le $_SERVER['HTTP_REFERER']; PHP me donne l'URL entière, ce qui est un début. Y a-t-il un moyen pour que cela ne me donne que le domaine racine, soit via une autre variable ou une fonction, en gardant à l'esprit que certains référents peuvent utiliser http: // et certains https: // (donc simplement à partir du septième caractère ne fonctionnerait pas toujours)? De cette façon, je peux faire correspondre l'URL sur la base de deux (ou plus) adresses prédéfinies et produire le contenu qui se rapporte à ce domaine.

27
Nathan Bunn
parse_url($_SERVER['HTTP_REFERER'], PHP_URL_Host)

Voir http://php.net/manual/en/function.parse-url.php .

Notez cependant que le référent est terriblement facile à usurper, il n'est donc pas fiable.

46
deceze

http://php.net/manual/en/function.parse-url.php peut être votre meilleur pari, bien que vous puissiez également utiliser une expression régulière pour obtenir facilement ce que vous cherchez. .

3
Dan LaManna

cela devrait faire:

 $_SERVER['SERVER_NAME']
1
Matoeil