Comment déterminer le protocole URL actuel du site en PHP : cette fonction est-elle correcte ?

Mary-Kate Olsen
Libérer: 2024-10-27 16:58:02
original
864 Les gens l'ont consulté

 How to Determine the Current Site URL Protocol in PHP: Is this Function Correct?

PHP Get Site URL Protocol - http vs https

Question :

Un utilisateur a créé une fonction pour établir le protocole URL actuel du site, mais il ne sait pas s'il fonctionne sous HTTPS car ils n'ont pas SSL. Ils demandent si leur fonction est correcte :

function siteURL()
{
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $domainName = $_SERVER['HTTP_HOST'].'/';
    return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Copier après la connexion

Ils se demandent également s'ils peuvent simplifier la fonction comme suit :

function siteURL()
{
    $protocol = 'http://';
    $domainName = $_SERVER['HTTP_HOST'].'/'
    return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Copier après la connexion

Réponse :

La fonction fournie est correcte et peut déterminer efficacement le protocole (http ou https) en fonction des conditions suivantes :

  • Si $_SERVER['HTTPS'] n'est pas vide et n'est pas égal à 'off '
  • Si $_SERVER['SERVER_PORT'] est égal à 443

Cependant, il existe une manière plus concise d'obtenir le même résultat :

if (isset($_SERVER['HTTPS']) &&
    ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
    isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
    $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
  $protocol = 'https://';
}
else {
  $protocol = 'http://';
}
Copier après la connexion

Cet extrait de code vérifie à la fois la présence de $_SERVER['HTTPS'] et si sa valeur est 'on' ou 1. Il vérifie également la présence de $_SERVER['HTTP_X_FORWARDED_PROTO'] et si sa valeur est 'https '. Ce scénario se produit lorsque le site Web utilise HTTPS, mais que le protocole n'est pas directement accessible via $_SERVER['HTTPS'].

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal