2013-03-21 75 views
0

堅持表單數據我有噸http://domain.com它引用的一個現有的網站。我們要加強對網頁HTTPS,所以我加了一個簡單的代碼片段:PHP:橫跨重定向

if($_SERVER["HTTPS"] != "on") { 
     die(header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"])); 
     exit(); // to ensure the script stops here, just in case 
    } 

這工作,但很多文件都與在動作HTTP自引用形式。例如,在page.php文件有可能是:

<form action="http://domain.com/page.php" method="post"> 
<input type="text" name="sample" /> 
<input type="submit" value="Next" /> 
</form> 

有沒有辦法對我來說,執行從上面這個重定向片斷沒有打破所有這些形式?的目標是避免手動更新各做一個繁瑣的查找文件的100S的/替換步驟,通過對「HTTP/HTTPS」。

+0

任何適當的代碼編輯器具有「查找和設置文件替換」功能,它可以找到所有提交的匹配標準,更換'HTTP:// domain.com'用'的https:// domain.com'有一分鐘之內。以Notepad ++爲例。 – Ranty 2013-03-21 05:49:37

+0

是的,這就是我所說的單調乏味的「查找/替換」。我不能將它應用於交換'HTTP:// domain'用'的https:// domain'因爲很多域名被提取(即時代:'HTTP:<?PHP的echo $ DOMAIN;> //' )。由於以前的開發人員,這是一團糟,我只是希望通過避免這種繁瑣的查找/替換來節省客戶一些時間。看起來我不能。 – Bing 2013-03-22 00:45:58

回答

1

不,你不能只是重定向,因爲那麼你無論如何提交不安全內容,重定向到HTTPS是沒有意義的,因爲請求是已經顯現。

您應該使用相對URL。其中/是一樣的只是域名

/ = domain.com

/page = domain.com/page

沒有領先/ URL是相對於當前的URI(減去查詢瓦爾): 所以,從http://domain.com/page -

行動:foo = http://domain.com/page/foo

action:/foo = http://domain.com/foo

http或https將以這種方式保存。

另一種方式是引領域與2斜線行動://domain.com但我認爲更舊版本的IE不明白這一點。

+0

好點,沒有考慮到內容不安全的提交;只是想着從數據庫中拉出來。謝謝! – Bing 2013-03-22 00:44:36