ホームページ >バックエンド開発 >PHPチュートリアル >PHP でサイトの URL プロトコル (HTTP または HTTPS) を確実に判断する方法

PHP でサイトの URL プロトコル (HTTP または HTTPS) を確実に判断する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 20:01:02217ブラウズ

How to Reliably Determine Your Site's URL Protocol (HTTP or HTTPS) in PHP?

PHP サイト URL プロトコルの取得: HTTP と HTTPS

PHP での現在のサイト URL プロトコル (HTTP または HTTPS) の決定は、安全性を確保するために不可欠です。一貫したウェブサイト運営。この記事では、プロトコル検出の微妙な違いを探り、関連する質問に答えます。

最初に、特定のサーバー変数に基づいてプロトコルを確立することを目的とした関数を提供しました。ただし、プロセスを簡素化する代替アプローチを提案します。

改善されたプロトコル検出機能:

<code class="php">function siteURL()
{
    $protocol = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
    $domainName = $_SERVER['HTTP_HOST'].'/';
    return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );</code>

この改善された機能:

  • 信頼性: HTTPS の使用時に設定される $_SERVER['HTTPS'] 変数を直接チェックします。
  • 簡略化: 複雑な条件を回避します。

SSL と変換の処理:

SSL では、最新のブラウザは通常、HTTP URL を HTTPS に自動的に変換します。ただし、サーバーはこの変換を強制しません。アンカー タグの URL が依然として HTTP を使用している場合、siteURL() 関数は正しく HTTP を返します。

セキュリティへの影響:

一般に、プロトコルの検出は、 SSL で安全に動作します。ただし、スクリプトまたは URL でプロトコルを明示的に定義する必要がある特定のシナリオでは便利です。

選ばれた答え:

受け取った回答:

<code class="php">if (isset($_SERVER['HTTPS']) &amp;&amp;
    ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
...</code>

技術的には正しいですが、HTTPS を検出するためのロジックを不必要に拡張します。上に示した単純化された関数は、同じ結果をより簡潔に実現します。

以上がPHP でサイトの URL プロトコル (HTTP または HTTPS) を確実に判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。