PHP: HTTP или HTTPS?

Как я могу узнать, был ли доступ к php-странице через http или https?

Если запрос был отправлен с помощью HTTPS, у вас будет дополнительный параметр в супергелбале $ _SERVER – $ _SERVER ['HTTPS']. Вы можете проверить, установлено ли оно или нет.

if( isset($_SERVER['HTTPS'] ) ) { 

Если ваш запрос отправлен HTTPS, у вас будет дополнительная переменная сервера с именем «HTTPS»,

 if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { //HTTPS } 
 $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'?'https':'http'; $protocol = isset($_SERVER["HTTPS"]) ? 'https' : 'http'; 

Они должны работать

Это может усложниться в зависимости от того, где PHP находится в вашей среде, так как ваш вопрос довольно широк. Это может зависеть от того, есть ли балансировка нагрузки и как она настроена. Вот несколько связанных вопросов:

  • Как я могу предотвратить доступ к файлам PHP, если вызывающий абонент не использует HTTPS?
  • Обнаружение HTTPS vs HTTP на сервере, отправив обратно ничего полезного
 $_SERVER['HTTPS'] 

Это будет содержать «непустое» значение, если запрос был отправлен через HTTPS

Переменные сервера PHP

Вы должны сделать это, проверив значение $_SERVER['HTTPS'] (его следует устанавливать только при использовании https).

См. http://php.net/manual/en/reserved.variables.server.php .