2009-10-21 54 views
0

這是一個登錄頁面。驗證後,用戶被重定向到主頁:在IE6中使用@header()重定向後整個頁面變爲空白

@header("Content-type: text/html; charset=utf-8"); 
@header('Location: index.php'); 
@header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
@header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past 

但是,如果IE6,頁面變爲空白!怎麼樣?它只發生在第一次;之後它會正常工作!

+1

爲什麼你需要所有其他的標題,如果你只是重定向?爲什麼不保留一個重定向線? header('Location:index.php'); – 2009-10-21 07:51:21

+0

我從anothoer項目複製它。 – Mask 2009-10-21 07:57:19

+0

此外,調用header()之後暫停執行是一種很好的做法,因此不會執行其他代碼。你可以使用die()或exit()來做到這一點。 – 2009-10-21 13:50:31

回答

1

爲什麼要壓制可能發生的警告/錯誤?我想先擺脫@,然後告訴我們究竟發生了什麼。

1

如果有任何輸出已經發送,header()將不起作用。這包括空格,空行或其他。確保在調用頭之前沒有任何輸出。

作品:

<?php 
header('Location: index.php'); 
?> 

不工作

<?php 
header('Location: index.php'); 
?> 

,並刪除了@,它吃了任何有用的信息標題試圖給你。

0

您還可以重定向使用JavaScript從客戶端:

相反的:

@header('Location: index.php'); 

客戶端重定向:

echo "<script>document.location.replace('index.php');</script>"; 
+1

使用位置標題更好一些。無論如何,這將適用於所有瀏覽器和用戶代理。任何值得一半的鹽的HTTP庫都能識別位置。很少有瀏覽器以外的代理會識別Javascript,並且很多做這些的人不一定會執行它。 – 2009-10-21 08:11:05

相關問題