Предполагая, что ваша страница с формой входа генерируется с помощью index.php
, вам нужно поместить пример кода для перенаправления HTTP на HTTPS в index.php
.Это гарантирует, что когда пользователь заполняет форму и отправляет ее, она отправляется на /login.php
через HTTPS, а не HTTP.
Помещать эту проверку в login.php
бесполезно, потому что ко времени login.php
получает запрос и пытается перенаправить на соответствующий URL-адрес HTTPS. Что ж, учетные данные уже отправлены ему в виде открытого текста, чего вам следует избегать.
Наблюдение, которое вы видите $_SERVER['SERVER_PORT']
, чтобы быть80
и $_SERVER["HTTPS"]
, которые не устанавливаются при установке чека внутри login.php
, являются еще одним доказательством того, что учетные данные для входа в него передаются через HTTP и, таким образом, учетные данные для входа на сервер поступают от клиента в незашифрованном виде.,Этого следует избегать, следуя тому, что я сказал в первом абзаце этого ответа.
Кстати, я бы не использовал PHP для такого рода перенаправления.Такие перенаправления очень удобно обрабатываются mod_rewrite
в Apache HTTPD.
Пример, при условии, что ваша страница входа доступна по URL, http://example.com/foo/:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^foo/$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]