2012-06-03 37 views
0

我有一個使用ssl的安全站點。我有一個php文件檢查登錄,如果你沒有登錄,它會彈出一個登錄表單,一旦你登錄刷新的頁面,並再次檢查登錄,當它通過它加載頁面內容。我想要做的是讓它在https中加載登錄,然後當javascript從ajax中獲得登錄成功的ok後,頁面重新加載僅爲http,以減少頁面的加載時間和延遲(這些是大的網頁和任何小東西都會有所幫助)。我需要動態地做到這一點,所以我不能只給它一個重定向網址。無ssl的重新加載頁面(https到http)

+0

一個簡單的302與位置頭不工作?有沒有一個實際的問題?你的用戶是否被提示他們正被重定向到一個不安全的站點? – Brad

+0

我不確定你的意思,但我需要的東西,將採取'https:// blablabla.com/this.php'並重新加載到'http:// blablabla.com/this.php' – Osman

+0

'header('位置:http://blablabla.com/this.php');'但是,我認爲如果你走這條路,IE用戶往往會被通知他們「被重定向到不安全的位置」。我已經看了這個問題已經有一段時間了,但是我相信如果你只是用JavaScript重定向,你就沒有這個問題。然而,你在你的問題中聲明你不想這樣做,但是將它標記爲JS/jQuery,所以我不確定你在問什麼。 – Brad

回答

1

爲了解決這個問題,你可以使用這個未經測試的僞代碼加載在你需要登錄的每一頁的頂部。

if(loggedin()&&$_SERVER[SERVER_PORT]==443) 
{ 
    //if user is logged in but they are still on the https site, redirect to the http site 
    header("Location:http://$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]?$_SERVER[QUERY_STRING]"); 
} 
elseif(!loggedin()&&$_SERVER[SERVER_PORT]!=443) 
{ 
    //if the user is not logged in and they are not on the secure site, send them to the login page on the secure site 
    header("Location:https://$_SERVER[HTTP_HOST]/login.php"); 
} 
+0

我想這樣做的JavaScript,因爲我需要用戶能夠登錄他們將要在網頁上而不是特定的登錄頁面。 – Osman