確定目前網站URL 協定(http 或https)對於確保安全且一致的網站運作。然而,在本地開發或沒有 SSL 的情況下,測試此類函數的準確性可能具有挑戰性。
提供的函數「siteURL」嘗試根據是否存在建立協定$_SERVER 陣列中的「HTTPS」鍵及其非空或「off」值。或者,它檢查“SERVER_PORT”是否為 443。如果滿足任一條件,則傳回“https://”,否則回傳“http://”。
在沒有 SSL 的情況下,準確確定協定需要檢查 $_SERVER 陣列。但是,如果 SSL 處於活動狀態,即使錨標記 URL 使用 http,伺服器也會自動將 URL 轉換為 https。因此,似乎沒有必要檢查協議。
為了解決這個問題,透過檢查 $_SERVER 中的 HTTPS 和 HTTP 協定指示符提出了改進的實作大批。如果滿足這些條件中的任何一個,則函數將傳回正確的協定。
<code class="php">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://'; }</code>
無論是否啟用 SSL,此方法都可確保這兩種情況的準確性。
以上是以下是一些標題選項,重點關注問題和解決方案: 選項 1(直接、簡潔): 如何確定 PHP 中正確的網站 URL 協定(http 與 https) 選項 2(強調查的詳細內容。更多資訊請關注PHP中文網其他相關文章!