Войти

Показать полную графическую версию : PHP. Как определить протокол?


pauluss
30-08-2005, 16:50
Неожиданный ступор.
Пользую SSL. Мне необходимо выполнять одни действия, если ко мне залезли по http, и другие, если по https.
Вопрос. Как определить (на PHP) протокол, по которому залезли на сайт?
(учитывая то, что реффереры могут вырезаться)

Спасибо.

Prisoner
31-08-2005, 09:37
Можно поглядеть в сторону предопределенных переменных:
$_SERVER['SERVER_PORT'] - порт на серверной машине, используемый web-сервером для соединения. По умолчанию это '80'; использование SSL, к примеру, изменит это значение на то, которое вы определили для секретного порта HTTP.
$_SERVER['SERVER_PROTOCOL'] - имя и версия информационного протокола, по которому страница запрошена; например, 'HTTP/1.0';

Беда в том, что я не использовал никогда SSL и не знаю подводных камней - содержимое переменных может не быть адекватными (это кстати, априори и без использования SSL - специфика предопределенных серверных переменных)

mar
31-08-2005, 10:28
pauluss
дурацкий вопрос: а по http и https идут по одному и тому же адресу? (адрес страницы)

pauluss
31-08-2005, 10:35
marКонечно по одному. Почему вопрос дурацкий? Надо сделать так: если на сайт залезли по http, то это обычный посетитель, если по https - это зона клиента, его надо авторизовывать и давать доступ ко всяким вкусным материалам поддержки. Где-то я это видел, забыл где.
Пока я вижу только один способ - по порту сервера. Немного неудобно тем, что при переносе на другой хостинг порт может быть другим. Хотя это конечно не критично.

mar
31-08-2005, 12:23
порт https обычно 443, хотя, конечно, ничто не мешает его поменять
Пожалуй, как уже сказал Prisoner, определять можно по SERVER_PORT (для апача), а для себя сделать какой-нибудь ini-файл с определенными переменными портов для http и https (на случай смены провайдера)
Или парсить SERVER_PROTOCOL - если лень заморачиваться с ini :)

pauluss
31-08-2005, 12:32
Я SERVER_PORT смотрю.
SERVER_PROTOKOL почему-то показывает HTTP/1.1 и на http запрос и на https.

Prisoner
31-08-2005, 17:11
Потому так осторожно и говорил об адекватности переменных :).

Igor_I
03-09-2005, 22:33
Где-то я это видел, забыл где.
https://mts.ru
http://mts.ru
Сервер построен на IIS.
А как же там сертификаты?




© OSzone.net 2001-2012