ホームページ > バックエンド開発 > PHPチュートリアル > PHP で現在のサイト URL プロトコルを確認する方法: この関数は正しいですか?

PHP で現在のサイト URL プロトコルを確認する方法: この関数は正しいですか?

Mary-Kate Olsen
リリース: 2024-10-27 16:58:02
オリジナル
904 人が閲覧しました

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

PHP サイト URL 取得プロトコル - http と https

質問:

ユーザーが、現在のサイト URL プロトコルに準拠していますが、SSL がないため、HTTPS で動作するかどうかは不明です。彼らは関数が正しいかどうかを尋ねます:

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() );
ログイン後にコピー

また、関数を次のように単純化できるかどうかも疑問に思います:

function siteURL()
{
    $protocol = 'http://';
    $domainName = $_SERVER['HTTP_HOST'].'/'
    return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
ログイン後にコピー

答え:

提供された関数は正しく、次の条件に基づいてプロトコル (http または https) を効果的に決定できます:

  • $_SERVER['HTTPS'] が空でなく、'off に等しくない場合】 '
  • $_SERVER['SERVER_PORT'] が 443 に等しい場合

ただし、同じ結果を達成するより簡潔な方法があります:

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://';
}
ログイン後にコピー

このコード スニペットは、$_SERVER['HTTPS'] の存在とその値が 'on' または 1 であるかどうかの両方をチェックします。また、$_SERVER['HTTP_X_FORWARDED_PROTO'] の存在とその値が 'https' かどうかもチェックします。 '。このシナリオは、Web サイトが HTTPS を使用しているが、$_SERVER['HTTPS'] 経由でプロトコルに直接アクセスできない場合に発生します。

以上がPHP で現在のサイト URL プロトコルを確認する方法: この関数は正しいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート