2013-04-21 98 views
1

我有一個簡單的代碼,用於將我的php文件重定向到https,如果它不存在,我不斷收到太多的重定向問題。導致太多重定向的Https?

if(strtolower($_SERVER['HTTPS']) != 'on') { 
redirect('https://domain.com/register.php'); 
} 

有什麼我可以做的,以解決這個問題?

謝謝。

+0

您在重定向頁面上沒有重定向嗎? – brbcoding 2013-04-21 18:55:24

+0

不,沒有其他重定向。 – user1993382 2013-04-21 18:56:41

+1

適當的測試只是簡單的'!'($ _ SERVER ['HTTPS'])''。 php不保證一個特定的值,只是在使用SSL時它不是空的。 – 2013-04-21 18:56:57

回答

3

PHP manual,$_SERVER['HTTPS']Set to a non-empty value if the script was queried through the HTTPS protocol.這不一定是on。然後你可能會陷入無限循環的重定向。

爲了避免這種情況,可使用empty()功能:

if ((!isset($_SERVER['HTTPS'])) || (empty($_SERVER['HTTPS'])) 
{ 
    redirect('https://domain.com/register.php'); 
} 

注:注意,使用ISAPI與IIS時,該值將被關閉,如果請求不是通過HTTPS協議作出。

+0

嗯,所以會 if(!empty($ _ SERVER [ 'HTTPS'])){ redirect('https://domain.com/register.php'); } 是anwser? – user1993382 2013-04-21 18:57:48

+0

@ user1993382如果$ _SERVER ['HTTPS']'爲空或未設置,則腳本將從非HTTPS URL進行查詢。所以你可能想使用'if(empty($ _ SERVER ['HTTPS']))'... – Jean 2013-04-21 18:59:49

+0

是的,我發現後,我注意到,做到了,謝謝! – user1993382 2013-04-21 19:02:02

1
if(!isset($_SERVER['HTTPS'])){ 
//redirect 
} 
相關問題