Подтвердить что ты не робот

PHP получить доменное имя

Возможный дубликат:
HTTP_HOST и SERVER_NAME

Здравствуйте,

Я хочу получить доменное имя, где работает script. Как это можно сделать с PHP? Я вижу, что $_SERVER['HTTP_HOST'], а также $_SERVER['SERVER_NAME'] содержат эту информацию. Будет ли эта переменная работать всегда, и я должен использовать ее над другой?

Спасибо.

4b9b3361

Ответ 1

Аналогичный вопрос задан в stackoverflow раньше.

Смотрите здесь: PHP $_SERVER ['HTTP_HOST'] против $_SERVER ['SERVER_NAME'], правильно ли я понимаю страницы man?

Также см. эту статью: http://shiflett.org/blog/2006/mar/server-name-versus-http-host

Рекомендуется использовать HTTP_HOST и возврат к SERVER_NAME только в том случае, если HTTP_HOST не был установлен. Он сказал, что SERVER_NAME может быть ненадежным на сервер по разным причинам, в том числе:

  • поддержка DNS
  • неправильно настроена
  • программное обеспечение для балансировки нагрузки

Источник: http://discussion.dreamhost.com/thread-4388.html

Ответ 2

Чтобы ответить на ваш вопрос, они должны работать до тех пор, пока:

  • Ваш HTTP-сервер передает эти значения вместе с PHP (я не знаю, кто этого не делает)
  • не доступ к script через командную строку (CLI)

Но, если я правильно помню, эти значения могут быть подделаны до такой степени, поэтому лучше не полагаться на них.

Мое личное предпочтение заключается в установить имя домена как переменную среды в виртуальном хосте apache2:

# Virtual host
setEnv DOMAIN_NAME example.com

И прочитайте его в PHP:

// PHP
echo getenv(DOMAIN_NAME);

Это, однако, не применимо ни при каких обстоятельствах.