La redirection HTTP vers HTTPS avec PHP
Je suis en train de travailler sur un panier d'achat du site web et je voudrais rediriger l'utilisateur vers une page HTTPS lorsqu'il d'entrer ses informations de facturation et de maintenir la connexion HTTPS pour les pages suivantes, jusqu'à ce qu'il se déconnecte.
De quoi ai-je besoin d'installer sur le serveur (je suis en utilisant Apache) pour ce faire, et comment cela peut-il rediriger être fait à partir de PHP?
Vous devez vous connecter pour publier un commentaire.
Essayer quelque chose comme cela (devrait fonctionner pour Apache et IIS):
if( $_SERVER['HTTPS'] == "off")
pour obtenir ce code. Je pense que c'est parce que je suis sur IIS, pas d'Apache comme l'OP.header("HTTP/1.1 301 Moved Permanently");
avant laheader("Location: $redirect");
pour le rendre stable.empty($var)
de la fonction combine!isset($var)
et$var == ""
$_SERVER['REQUEST_URI']
contient des caractères spéciaux, comme une nouvelle ligne?if((empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off") && $_SERVER['SERVER_PORT'] != HTTPS_PORT)
n'oubliez pas de définir le HTTPS_PORT à 443if((empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off") && ($_SERVER['HTTP_HOST'] !== "localhost" && $_SERVER['HTTP_HOST'] !== "127.0.0.1"))
C'est une bonne façon de le faire:
!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on'
sera toujours faux, car si la dernière partie est vraie, la première sera fausse.Vous pouvez toujours utiliser
pour rediriger vers l'URL de sauvegarde.
Mais je vous recommande de le faire par .htaccess et Apache règles de réécriture.
La redirection HTTP vers HTTPS avec PHP sur IIS
J'ai eu de la difficulté à obtenir la redirection vers HTTPS pour travailler sur un serveur Windows
qui exécute la version 6 de de microsoft Internet Information Services (IIS). Je suis de plus en plus
l'habitude de travailler avec Apache sur un hôte Linux, donc je me suis tourné vers Internet pour
aide et ce était la plus élevée au rang de Débordement de Pile question quand j'ai cherché
pour “php redirection http vers https”. Cependant, la réponse choisie n'a pas fonctionné
pour moi.
Après quelques essais et erreurs, j'ai découvert qu'avec IIS,
$_SERVER['HTTPS']
estmis à
off
pour les non-connexions TLS. Je pensais que le code suivant doitd'aider tous les autres utilisateurs IIS qui viennent à cette question via le moteur de recherche.
Modifier: à Partir d'un autre Un Débordement de pile répondre,
une solution plus simple est de vérifier
if($_SERVER["HTTPS"] != "on")
.apache
, j'ai posté cette réponse pour le bénéfice des autres utilisateurs IIS (similaire à la situation que j'ai été dans l') qui peut venir à travers cette page via le moteur de recherche. Je souscris à l'opinion que les réponses sont pour le bénéfice de la communauté dans son ensemble et pas seulement l'OP.Sur mon AWS beanstalk serveur, je ne vois pas la variable $_SERVER['HTTPS'] variable. Je ne vois $_SERVER['HTTP_X_FORWARDED_PROTO'] qui peut être "http" ou "https" donc, si vous êtes d'hébergement sur AWS, utilisez ceci: