PHP. Как определить протокол?
Неожиданный ступор.
Пользую SSL. Мне необходимо выполнять одни действия, если ко мне залезли по http, и другие, если по https. Вопрос. Как определить (на PHP) протокол, по которому залезли на сайт? (учитывая то, что реффереры могут вырезаться) Спасибо. |
Можно поглядеть в сторону предопределенных переменных:
$_SERVER['SERVER_PORT'] - порт на серверной машине, используемый web-сервером для соединения. По умолчанию это '80'; использование SSL, к примеру, изменит это значение на то, которое вы определили для секретного порта HTTP. $_SERVER['SERVER_PROTOCOL'] - имя и версия информационного протокола, по которому страница запрошена; например, 'HTTP/1.0'; Беда в том, что я не использовал никогда SSL и не знаю подводных камней - содержимое переменных может не быть адекватными (это кстати, априори и без использования SSL - специфика предопределенных серверных переменных) |
pauluss
дурацкий вопрос: а по http и https идут по одному и тому же адресу? (адрес страницы) |
marКонечно по одному. Почему вопрос дурацкий? Надо сделать так: если на сайт залезли по http, то это обычный посетитель, если по https - это зона клиента, его надо авторизовывать и давать доступ ко всяким вкусным материалам поддержки. Где-то я это видел, забыл где.
Пока я вижу только один способ - по порту сервера. Немного неудобно тем, что при переносе на другой хостинг порт может быть другим. Хотя это конечно не критично. |
порт https обычно 443, хотя, конечно, ничто не мешает его поменять
Пожалуй, как уже сказал Prisoner, определять можно по SERVER_PORT (для апача), а для себя сделать какой-нибудь ini-файл с определенными переменными портов для http и https (на случай смены провайдера) Или парсить SERVER_PROTOCOL - если лень заморачиваться с ini :) |
Я SERVER_PORT смотрю.
SERVER_PROTOKOL почему-то показывает HTTP/1.1 и на http запрос и на https. |
Потому так осторожно и говорил об адекватности переменных :).
|
Цитата:
http://mts.ru Сервер построен на IIS. А как же там сертификаты? |
Время: 15:12. |
Время: 15:12.
© OSzone.net 2001-