Как проверить, вызывается ли страница с https или http в PHP?
13669

Как проверить, вызывается ли страница с 'HTTPS' или 'HTTP' в PHP?


Целью этой статьи является проверка того, вызывается ли страница с 'HTTPS' или 'HTTP'. Для этого мы можем использовать следующие два подхода.

Подход 1: Проверьте, использует ли соединение SSL, и если значение $_SERVER['HTTPS'] установлено, то мы можем сказать, что соединение защищено и вызывается с 'HTTPS'. Если значение пустое, то есть установлено значение '0' или 'off', то можно сказать, что соединение не защищено и страница вызывается с 'HTTP'.

$_SERVER - это массив, который содержит всю информацию о заголовках запроса, путях и расположении скриптов. Он будет иметь "непустое" значение, если запрос был отправлен через HTTPS, и пустое или "0", если запрос был отправлен через HTTP.

Синтаксис:

if (isset($_SERVER['HTTPS']))
{
 // страница вызвана из https
 // Соединение безопасно
}
else
{
 // страница вызвана из http
 // Соединение не безопасно
}

Подход 2: Проблема с предыдущим подходом заключается в том, что на некоторых серверах значение $_SERVER['HTTPS'] не определено, и это может привести к сообщению об ошибке при проверке того, что страница вызывается с 'HTTPS' или с 'HTTP'. Чтобы решить эту проблему, мы должны также проверить номер порта сервера, если номер используемого порта 443, то соединение осуществляется через 'HTTPS'.

Синтаксис:

if ((isset($_SERVER['HTTPS']) && 
        (($_SERVER['HTTPS'] == 'on'))) 
 || (isset($_SERVER['HTTPS']) && 
           $_SERVER['SERVER_PORT'] == 443))
{
  // страница вызвана из https
}
else
{
  // страница вызвана из http
}