Pracuję nad witryną koszyka na zakupy i chciałbym przekierować użytkownika na stronę HTTPS, kiedy wprowadza swoje dane rozliczeniowe i utrzymywać połączenie HTTPS dla następnych stron, dopóki się nie wyloguje.
Co muszę zainstalować na serwerze (używam Apache), aby to zrobić i jak można to przekierować z PHP?
if( $_SERVER['HTTPS'] == "off")
aby ten kod działał. Myślę, że to dlatego, że korzystam z IIS, a nie Apache jak OP.To dobry sposób na zrobienie tego:
źródło
!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on'
zawsze będzie fałszywy, ponieważ jeśli ostatnia część jest prawdziwa, pierwsza będzie fałszywa.Przekierowanie z HTTP do HTTPS z PHP w IIS
Miałem problem z przekierowaniem do HTTPS do pracy na serwerze Windows, na którym działa wersja 6 MS Internet Information Services (IIS) . Jestem bardziej przyzwyczajony do pracy z Apache na hoście z systemem Linux, więc zwróciłem się o pomoc do Internetu i było to najwyżej ocenione pytanie dotyczące przepełnienia stosu, gdy szukałem „przekierowania php http na https” . Jednak wybrana odpowiedź nie działa dla mnie.
Po kilku próbach i błędach odkryłem, że w przypadku usług IIS
$_SERVER['HTTPS']
jest ustawiony naoff
połączenia inne niż TLS. Pomyślałem, że poniższy kod powinien pomóc innym użytkownikom IIS, którzy trafią na to pytanie za pośrednictwem wyszukiwarki.Edycja : z innej odpowiedzi Stack Overflow prostszym rozwiązaniem jest sprawdzenie
if($_SERVER["HTTPS"] != "on")
.źródło
apache
, opublikowałem tę odpowiedź z korzyścią dla innych użytkowników IIS (podobnie jak w sytuacji, w której byłem), którzy mogą natknąć się na tę stronę za pośrednictwem wyszukiwarki. Zgadzam się z poglądem, że odpowiedzi służą całemu społeczeństwu, a nie tylko PO.Zawsze możesz użyć
aby przekierować do adresu URL zapisu.
Ale poleciłbym to zrobić przez .htaccess i zasady przepisywania Apache.
źródło
Na moim serwerze łodygi fasoli AWS nie widzę zmiennej $ _SERVER ['HTTPS']. Widzę $ _SERVER ['HTTP_X_FORWARDED_PROTO'], które może mieć wartość „http” lub „https”, więc jeśli hostujesz w AWS, użyj tego:
źródło