web-dev-qa-db-fra.com

PHP obtenir le nom de domaine

Duplicate possible:
HTTP_Host vs. SERVER_NAME

Salut,

Je veux obtenir le nom de domaine pour l'emplacement du script. Comment cela peut-il être fait avec PHP? Je vois que $_SERVER['HTTP_Host'] ainsi que $_SERVER['SERVER_NAME'] contiennent cette information. Cette variable fonctionnera-t-elle toujours et devrais-je utiliser l'une sur l'autre?

Je vous remercie.

78
Francisc

Une question similaire a déjà été posée dans stackoverflow.

Voir ici: PHP $ _SERVER ['HTTP_Host'] vs $ _SERVER ['SERVER_NAME'], ai-je bien compris les pages de manuel?

Voir également cet article: http://shiflett.org/blog/2006/mar/server-name-versus-http-Host

Recommandé avec HTTP_Host et de ne recourir à SERVER_NAME que si HTTP_Host n'est pas défini. Il a déclaré que SERVER_NAME pouvait ne pas être fiable sur le serveur pour diverses raisons, notamment:

  • pas de support DNS
  • mal configuré
  • derrière le logiciel d'équilibrage de charge

Source : http://discussion.dreamhost.com/thread-4388.html =

82
Mukesh Chapagain

Pour répondre à votre question, celles-ci devraient fonctionner aussi longtemps que:

  • Votre serveur HTTP transmet ces valeurs à PHP (je n'en connais aucune non plus)
  • Vous n'accédez pas au script via la ligne de commande (CLI)

Mais, si je me souviens bien, ces valeurs peuvent être falsifiées dans une certaine mesure, il est donc préférable de ne pas compter sur elles.

Ma préférence personnelle est de définir le nom de domaine en tant que variable d'environnement dans l'hôte virtuel Apache2:

# Virtual Host
setEnv DOMAIN_NAME example.com

Et lisez-le en PHP :

// PHP
echo getenv(DOMAIN_NAME);

Ceci, cependant, n'est pas applicable dans toutes les circonstances.

7
xzyfer