Je travaille sur un site Web de panier d'achat et je souhaite rediriger l'utilisateur vers une page HTTPS lorsqu'il saisit ses informations de facturation et maintenir la connexion HTTPS pour les pages suivantes jusqu'à ce qu'il se déconnecte.
Que dois-je installer sur le serveur (j'utilise Apache) pour ce faire, et comment cette redirection peut-elle être effectuée à partir de PHP?
if( $_SERVER['HTTPS'] == "off")
pour que ce code fonctionne. Je pense que c'est parce que je suis sur IIS, pas Apache comme l'OP.C'est une bonne façon de le faire:
la source
!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on'
sera toujours fausse, car si la dernière partie est vraie, la première sera fausse.Redirection de HTTP vers HTTPS avec PHP sur IIS
J'avais du mal à obtenir la redirection vers HTTPS pour travailler sur un serveur Windows qui exécute la version 6 de MS Internet Information Services (IIS) . Je suis plus habitué à travailler avec Apache sur un hôte Linux, alors je me suis tourné vers Internet pour obtenir de l'aide et c'était la question la plus élevée de Stack Overflow lorsque j'ai recherché «php redirect http to 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']
est défini suroff
pour les connexions non TLS. J'ai pensé que le code suivant devrait aider tous les autres utilisateurs d'IIS qui viennent à cette question via le moteur de recherche.Edit : À partir d'une autre réponse de Stack Overflow , une solution plus simple consiste à vérifier
if($_SERVER["HTTPS"] != "on")
.la source
apache
, j'ai publié cette réponse au profit d'autres utilisateurs IIS (similaire à la situation dans laquelle je me trouvais) qui pourraient rencontrer cette page via le moteur de recherche. Je souscris à l'idée que les réponses sont dans l'intérêt de la communauté dans son ensemble et pas seulement du PO.Vous pouvez toujours utiliser
pour rediriger vers l'URL de sauvegarde.
Mais je recommanderais de le faire par .htaccess et les règles de réécriture Apache.
la source
Sur mon serveur AWS beanstalk, je ne vois pas la variable $ _SERVER ['HTTPS']. Je vois $ _SERVER ['HTTP_X_FORWARDED_PROTO'] qui peut être soit 'http' ou 'https', donc si vous hébergez sur AWS, utilisez ceci:
la source