2011-02-16 57 views
0

我在Zend框架中有一個網站。這裏我想確定當前的URL是否包含HTTPS或HTTP?我用下面的代碼確定當前的URL是在項目中的http還是https

if($_SERVER['HTTPS']==on){ echo "something";}else{ echo "something other";} 

但結果是不正確的。有沒有其他方法可以確定這一點? 另外我還有一個問題。 如何使用PHP獲取完整的當前網址(包括HTTP/HTTPS)?

請幫我

在此先感謝

回答

6
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") { 
    echo "something"; 
} else { 
    echo "something other"; 
} 

通知on應該是一個字符串。

+0

我一直在尋找同樣的解決方案一段時間了,但在我的服務器上,我得到了未定義的索引:HTTPS,即使我在瀏覽https – Jorre 2011-09-25 20:05:51

2

你需要修復檢查應該是

if ($_SERVER['HTTPS'] == 'on') 

,或者嘗試以下功能

if(detect_ssl()){ echo "something";}else{ echo "something other";} 

function detect_ssl() { 
return ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1 || $_SERVER['SERVER_PORT'] == 443) 
} 
4

更好的方法是檢查

if (isset($_SERVER['HTTPS']) && $_SEREVER['HTTPS'] != 'off') 
{ 
    //connection is secure do something 
} 
else 
{ 
    //http is used 
} 

在手動

集表示一個非空值,如果腳本 是通過HTTPS協議 查詢。

Note: Note that when using ISAPI with IIS, the value will be off if the 

請求不是通過HTTPS 協議進行的。

0

這將檢查您是否使用https或http並輸出當前網址。

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

if($https) { 
    $url = "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
} else { 
    $url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
} 
13

你可以使用在Zend框架已經確定,而不是明確使用$_SERVER超全局變量的方法。

要確定連接是否HTTP或HTTPS(此代碼應該進入你的控制器):

if ($this->getRequest()->isSecure()) { echo 'https'; } else { echo 'http'; } 

要獲得完整的當前網址:

$this->getRequest()->getScheme() . '://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getRequestUri(); 
相關問題