2015-10-14 33 views
0

我有PHP的頭一個問題重定向不工作的Safari瀏覽器有條件的JS重定向

if (!isset($lang)) 
{ 
header('Location: http://domain.com/en/home'); 
} 

我已閱讀,這可能是與JS相當簡單的做,但不知道如何使用,如果條件做$ lang已設置。

應該,我只是在「php if」中執行js,或者有一個更好/更聰明的方法來做到這一點。

謝謝。

if (!isset($lang)) 
{ 
    header('Location: http://domain.com/en/home'); 
    exit; 
} 

注:這個正常工作,你需要在任何其他與設置任何doctype之前設置這個頭

+2

您正在編寫一個運行在後端(服務器)上的php代碼,並且您覺得有重定向的瀏覽器問題。請詳細說明您的問題,我認爲瀏覽器對於php重定向沒有任何問題。 –

+1

你說「有問題」,但你沒有說出什麼問題。我簡直無法相信Safari不理解「位置」標題。自從20世紀80年代後期以來,它一直是HTTP協議的一部分,所以這將是一個史詩般的錯誤! –

+0

問題是,該網站顯示幾秒鐘,然後Safari說:「網站反覆出現問題......」。我做了一些搜索,看到過去有/ php的頭和Safari問題。所以,我認爲這是我的問題所在。 – lStoilov

回答

1

首先,如果你設置一個重定向頭,你應該停止PHP執行。此外,exit可防止其他任何內容發送到瀏覽器(內容,其他標題等)。混合標題可能會導致不需要的行爲。

其次,你可以這樣做:

if (!isset($lang)) 
{ 
    ?> 
    <script> 
    window.location = "http://domain.com/en/home"; 
    </script> 
    <?php 
} 
+0

謝謝,不知何故,我錯過了退出部分。我想我應該停止夜間工作:)現在已經修好了! – lStoilov

1

使用Java Script

if (!isset($lang)) 
{ 
    ?> 

    <script> 
    location.href = "http://domain.com/en/home"; 
    </script> 

    <?php 
} 
1

您可以ob_start()

ob_start()//Define at the top of the php page. 
if (!isset($lang)) 
{ 
header('Location: http://domain.com/en/home'); 
exit; 
} 
1

嘗試可以使用echo打印HTML標籤<script>,把你的t中的JavaScript代碼他的標籤。

if (!isset($lang)){ 
    echo " 
     <script> 
      window.location = "http://domain.com/en/home"; 
     </script> 
    "; 
}