2012-11-28 50 views
0

我需要根據http或https進行操作。例如:如何在URI中檢索http或https

$https = strpos($_SERVER['REQUEST_URI'], 'https') !== false; 
if ($https) { ?> 
    <script type="text/javascript"> 
    var a = 'a'; 
    </script> 
<?php } else { ?> 
    <script type="text/javascript"> 
    var b = 'b'; 
    </script> 
<?php } ?> 

但這不起作用。無論我訪問的頁面是http還是https,它總是進入第二個選項。有什麼解決辦法嗎?提前致謝。

+2

這可以單獨使用JavaScript來完成,請檢查'document.location.protocol'而不是有條件地構建不同的'

1

$_SERVER['REQUEST_URI']只返回相對於服務器根的路徑,而不是域或協議。此外,如果我訪問http://example.com/https-is-cool,代碼將失敗。

相反,嘗試:

$https = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== "off"; 
1
if(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443){ 
    echo 'https'; 
}else{ 
    echo 'http'; 
} 

或作爲一個變量:

$https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? true : false; 
1

我會@ MichaelBertwoski的評論認爲,如果你只是想對JavaScript做這個,做在這樣的JavaScript檢測。

if (window.location.protocol == 'https:') { 
    var a = 'a'; 
} else { 
    var b = 'b'; 
} 

如果您需要PHP中的信息,您可以使用發佈的其他答案之一。

相關問題