Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Определить, с какого домена запрашивается скрипт


Автор: begin 29.6.2011, 15:48
Есть основной сайт "А". К нему можно подключать по заявке другие домены "Б". После внесения на их стороне соответствующих А-записей и внесения нужных настроек на стороне сайта "А" получается следующее: набираем в адресной строке адрес сайта "Б", а видим содержимое сайта "А". Такое часто используется при подключении сайтов к партнерским программам интернет-магазинов и прочих сервисов.

Но вот задача: как в скриптах сайта "А" (а ведь именно и только они исполняются при обращении и к А и к Б) определить с какого домена происходит обращение?
С помощью $_SERVER['HTTP_REFERER'] не получается, т.к. если просто набрать адрес сайта Б, то значение этой переменной еще пусто.
Подскажите решение  smile 

Автор: ayax2005 29.6.2011, 15:55
HTTP_REFERER - может содержать входящий линк.
HTTP_HOST - содержит исполняющий хост.
Тут всё будет зависить от того, как вы запускаете скрипты из А -:
Если это TDS и вы делаете редирект - то HTTP_REFERER будет содержать Б, вне зависимости от того, откуда пришли на Б.
Если это партнёрка, А и Б расположены на одном сервере и вы инклюдите скрипты А, то используйте HTTP_HOST.
Если ваши домены припаркованы и вы подключаетесь к А через XML или ещё как - так и передавайте в эти скрипты HTTP_HOST.

Автор: begin 29.6.2011, 16:17
А - это наш сервер, Б и прочи - чужие серверы.
Сейчас попробовал $_SERVER["HTTP_HOST"] и $_SERVER["SERVER_NAME"].
Оба варианта работают правильно - выдают домен, видимый в адресной строке.
Какой из вариантов лучше использовать? Наверное, $_SERVER["SERVER_NAME"], т.к. его нельзя подделать в отличие от $_SERVER["HTTP_HOST"] ?

Автор: ayax2005 29.6.2011, 16:24
на счёт того, можно ли подделать - не интересовался.
В принципе, вам, как ПП-серверу, в общем-то всё равно - ваша задача получить траф, а откуда, никакой разницы по большому счёту - вы кроме контента никакой серкертной информации не передаёте.
При желании можете по md5 проверять какой-нить ключик, в принципе.

В самих перменных почти не отличия, кроме того, что server_host будет содержать порт, если он не 80. Поэтому что улчше использовать  - решайте сами в силу реализации.

Автор: begin 29.6.2011, 16:49
Мне, как ПП-серверу, данные все таки важны. Необходимо отслеживать регистрации с домена "Б", а также подключать соответствующие ему настройки дизайна сайта.
Буду пробовать с $_SERVER["SERVER_NAME"]
Благодарю за помощь  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)