2012-03-24 96 views
2

我試圖用這個代碼:包含HTTPS使用SSL來確保一切是安全的,但是當PHP的HTTPS請求一個頁面

if($_SERVER['HTTP_PORT'] !== 443 && !isset($_SERVER['HTTPS'])) { 
    header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 
    exit; 
} 

,使我的登錄頁面和註冊頁面我運行頁面的錯誤消息顯示了使用$ _ SERVER 未定義指數錯誤[「HTTPS」]

,所以我決定用另一個問題:

if (isset($_SERVER["HTTPS"]) && strtolower($_SERVER["HTTPS"]) == "on") { 
    $pageURL .= "s"; 
} 

但它沒有工作。在HTTPS沒有露面和http只有那裏...

任何想法如何做到這一點用PHP ...

感謝

解決的辦法是:

if($_SERVER["HTTPS"] != "on") 

{ header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); exit(); }

回答

2

manual

$_SERVER['HTTPS']
 設定爲非空值如果腳本是通過HTTPS協議查詢。

因此,你應該使用以下條件檢查的HTTPS連接:

if(!empty($_SERVER['HTTPS'])) 
{ 
    // https://... 
} 
+0

謝謝,我試過了,但沒有奏效。然而,我用另一種方式類似。這裏是代碼:'if($ _ SERVER [「HTTPS」]!=「on」) {「Location:https://」。$ _SERVER [「HTTP_HOST」]。$ _SERVER [「REQUEST_URI」 ]); exit(); }' – 2012-03-24 14:56:07

1

你最好使用$_SERVER['SERVER_PORT']。 HTTP_PORT並不總是返回端口號。