我在Zend框架中有一個網站。這裏我想確定當前的URL是否包含HTTPS或HTTP?我用下面的代碼確定當前的URL是在項目中的http還是https
if($_SERVER['HTTPS']==on){ echo "something";}else{ echo "something other";}
但結果是不正確的。有沒有其他方法可以確定這一點? 另外我還有一個問題。 如何使用PHP獲取完整的當前網址(包括HTTP/HTTPS)?
請幫我
在此先感謝
我在Zend框架中有一個網站。這裏我想確定當前的URL是否包含HTTPS或HTTP?我用下面的代碼確定當前的URL是在項目中的http還是https
if($_SERVER['HTTPS']==on){ echo "something";}else{ echo "something other";}
但結果是不正確的。有沒有其他方法可以確定這一點? 另外我還有一個問題。 如何使用PHP獲取完整的當前網址(包括HTTP/HTTPS)?
請幫我
在此先感謝
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") {
echo "something";
} else {
echo "something other";
}
通知on
應該是一個字符串。
你需要修復檢查應該是
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)
}
更好的方法是檢查
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 協議進行的。
這將檢查您是否使用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'];
}
你可以使用在Zend框架已經確定,而不是明確使用$_SERVER
超全局變量的方法。
要確定連接是否HTTP或HTTPS(此代碼應該進入你的控制器):
if ($this->getRequest()->isSecure()) { echo 'https'; } else { echo 'http'; }
要獲得完整的當前網址:
$this->getRequest()->getScheme() . '://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getRequestUri();
我一直在尋找同樣的解決方案一段時間了,但在我的服務器上,我得到了未定義的索引:HTTPS,即使我在瀏覽https – Jorre 2011-09-25 20:05:51