Ich arbeite an einer Warenkorb-Website und möchte den Benutzer auf eine HTTPS-Seite umleiten, wenn er seine Rechnungsdetails eingibt, und die HTTPS-Verbindung für die nächsten Seiten beibehalten, bis er sich abmeldet.
Was muss ich auf dem Server installieren (ich verwende Apache), um dies zu tun, und wie kann diese Umleitung von PHP aus erfolgen?
if( $_SERVER['HTTPS'] == "off")
, damit dieser Code funktioniert. Ich denke, das liegt daran, dass ich auf IIS bin und nicht auf Apache wie das OP.Dies ist ein guter Weg, um es zu tun:
quelle
!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on'
ist immer falsch, denn wenn der letzte Teil wahr ist, ist der erste falsch.Umleiten von HTTP zu HTTPS mit PHP unter IIS
Ich hatte Probleme, die Umleitung zu HTTPS auf einem Windows-Server durchzuführen, auf dem Version 6 von MS Internet Information Services (IIS) ausgeführt wird . Ich bin eher daran gewöhnt, mit Apache auf einem Linux-Host zu arbeiten, daher habe ich mich an das Internet gewandt, um Hilfe zu erhalten. Dies war die am höchsten bewertete Frage zum Stapelüberlauf, als ich nach "PHP Redirect http to https" suchte . Die ausgewählte Antwort hat bei mir jedoch nicht funktioniert.
Nach einiger Versuch und Irrtum, entdeckte ich , dass mit IIS,
$_SERVER['HTTPS']
eingestellt wirdoff
für Verbindungen nicht-TLS. Ich dachte, der folgende Code sollte allen anderen IIS-Benutzern helfen, die über eine Suchmaschine zu dieser Frage kommen.Bearbeiten : Aus einer anderen Antwort zum Stapelüberlauf besteht eine einfachere Lösung darin, dies zu überprüfen
if($_SERVER["HTTPS"] != "on")
.quelle
apache
, habe ich diese Antwort zum Nutzen anderer IIS-Benutzer (ähnlich der Situation, in der ich mich befand) veröffentlicht, die möglicherweise über eine Suchmaschine auf diese Seite stoßen. Ich stimme der Ansicht zu, dass Antworten zum Nutzen der gesamten Gemeinschaft und nicht nur des OP sind.Sie können immer verwenden
um zur gespeicherten URL umzuleiten.
Aber ich würde empfehlen, dies mit .htaccess und den Apache-Umschreiberegeln zu tun.
quelle
Auf meinem AWS-Beanstalk-Server wird die Variable $ _SERVER ['HTTPS'] nicht angezeigt. Ich sehe $ _SERVER ['HTTP_X_FORWARDED_PROTO'], das entweder 'http' oder 'https' sein kann. Wenn Sie also auf AWS hosten, verwenden Sie Folgendes:
quelle