首頁  >  文章  >  後端開發  >  如何在 PHP 中可靠地確定網站的 URL 協定(HTTP 或 HTTPS)?

如何在 PHP 中可靠地確定網站的 URL 協定(HTTP 或 HTTPS)?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 20:01:02165瀏覽

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

PHP 取得網站URL 協定:HTTP 與HTTPS

在PHP 中決定目前網站URL 協定(HTTP 或HTTPS)對於安全至HTTPS)對於安全性至HTTPS)重要和一致的網站運營。在本文中,我們將探討協議檢測的細微差別並回答相關問題。

最初,您提供了一個旨在基於某些伺服器變數建立協定的函數。不過,我們會提出簡化流程的替代方法。

改良的協議檢測功能:

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

此改進的功能:

  • 可靠:
  • 可靠:直接檢查$_SERVER['HTTPS'] 變量,該變量在使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn