Maison >développement back-end >tutoriel php >Comment puis-je déterminer de manière fiable l'état de la connexion HTTPS en PHP ?

Comment puis-je déterminer de manière fiable l'état de la connexion HTTPS en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-03 19:17:13849parcourir

How Can I Reliably Determine HTTPS Connection Status in PHP?

Détermination de l'état de la connexion HTTPS au-delà de $_SERVER['HTTPS']

De nombreux didacticiels en ligne suggèrent de vérifier $_SERVER['HTTPS'] pour vérifier si une connexion au serveur est sécurisée via HTTPS. Cependant, $_SERVER['HTTPS'] peut ne pas être défini sur certains serveurs, ce qui entraîne des erreurs.

Variable alternative pour la détection HTTPS

Pour surmonter ce problème, envisagez en utilisant la fonction isSecure(), qui fournit une indication fiable de l'état de la connexion HTTPS même lorsque $_SERVER['HTTPS'] est undefined :

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}

Compatibilité et considérations

  • Compatibilité IIS :Cette fonction fonctionne avec les serveurs IIS.
  • **Indéfini $_SERVER['HTTPS'] :** Malgré la documentation indiquant que $_SERVER['HTTPS'] doit être défini pour les connexions HTTPS, il peut ne pas être défini avec certaines configurations.
  • Serveurs Apache 1.x : Les serveurs Apache 1.x peuvent ne pas définir $_SERVER ['HTTPS'] pour des connexions sécurisées.
  • Vérification du port 443 : La convention suggère que les connexions effectués sur le port 443 utilisent généralement des sockets sécurisés.

Load Balancer et HTTP_X_FORWARDED_PROTO

Notez que cette fonction ne teste pas la connexion entre le client et une charge potentielle balancier. Pour vérifier cela, l'en-tête HTTP_X_FORWARDED_PROTO peut être utilisé, mais sa mise en œuvre est plus complexe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn