Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   PHP. Как определить протокол? (http://forum.oszone.net/showthread.php?t=53277)

pauluss 30-08-2005 16:50 352034

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

Спасибо.

Prisoner 31-08-2005 09:37 352156

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

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

mar 31-08-2005 10:28 352171

pauluss
дурацкий вопрос: а по http и https идут по одному и тому же адресу? (адрес страницы)

pauluss 31-08-2005 10:35 352175

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

mar 31-08-2005 12:23 352211

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

pauluss 31-08-2005 12:32 352213

Я SERVER_PORT смотрю.
SERVER_PROTOKOL почему-то показывает HTTP/1.1 и на http запрос и на https.

Prisoner 31-08-2005 17:11 352293

Потому так осторожно и говорил об адекватности переменных :).

Igor_I 03-09-2005 22:33 353079

Цитата:

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


Время: 15:12.

Время: 15:12.
© OSzone.net 2001-