2013-05-16 126 views
4

我已經完成了我的研究 - 並找到了多個解決方案來解決這個問題,但無論出於何種原因,我的工作仍然無法正常工作!PHP頭重定向不起作用

使用IIS來承載站點本地重定向工作正常,但是當我將它放在我的Web服務器上時,重定向不起作用。

下面是我的'myaccount.php'頁面的一段代碼。

<?php 
session_start(); 
if ($_SESSION['LoggedIn'] == true) 
{  
    // ... Display page... lots of code here 
} 
else 
// Session not active. 
{ 
    // Redirect to login page. 
    header("Location: http://{$_SERVER['HTTP_HOST']}/2ndassign/login.php"); 
} 
?> 

當該頁面在線託管我只是一個空白的「myaccount.php」 ......不重定向發生。沒有可能導致錯誤的空白。

所以,我已經將我的代碼縮減到了這個位置,這樣它就儘可能的簡單和簡單。錯誤報告已啓用,因此不再顯示空白頁面,但會吐出任何錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 
header("Location:http://{$_SERVER['HTTP_HOST']}/2ndassign/login.php"); 
?> 

您可以查看www.candlesoft.com.au/2ndassign/myaccount.php 網站這可以幫助你在幫我 - 看被吐出來的是什麼錯誤。

我的膽量告訴我這是我的託管服務提供商的設置。

CODE ON PASTEBIN - 這是來自www.candlesoft.com.au/2ndassign/myaccount.php的myaccount.php - 它不是摘錄它是整個文件。 (顯示空白不會導致錯誤) http://pastebin.com/FUHPpT5A


原來故障是,我需要將文件保存爲UTF-8(無BOM)... PHP似乎解釋某些字符物料清單生成爲空白 - 更好地解釋這裏:How to fix "Headers already sent" error in PHP 感謝Billy2mates的鏈接!

+1

'Warning:Can not modify header information - headers already sent by(output started在/home/candleso/public_html/2ndassign/myaccount.php:1)/ home/candleso/public_html/2ndassign/myaccount。在線4上的php' –

+0

請確保代碼位於''區段 –

+0

之前我認爲你的printf(「somthing」)或echo,你不能在位置標題前輸出任何文本,直到標題顯示你的整個頁面代碼位置?它可能會幫助完整。 –

回答

4

錯誤描述問題

Warning: Cannot modify header information - headers already sent by (output started at /home/candleso/public_html/2ndassign/myaccount.php:1) in /home/candleso/public_html/2ndassign/myaccount.php on line 4 

東西被髮送到瀏覽器,因此PHP不能重定向 - 甚至是空白空白行將導致此問題。標題必須是發送到瀏覽器的第一件事情之一。

1

頭指令必須的第一指令的一個,因爲它不能有任何HTML代碼之前它

+0

所以你可以切換if else指令的內容,並用'$ _SESSION ['LoggedIn'] == false' – Tynamo

3

嘗試ob_start();和ob_flush();

<?php 
ob_start(); 
error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 
header("Location:http://{$_SERVER['HTTP_HOST']}/2ndassign/login.php"); 
ob_flush(); 
?> 

這將工作

0

試試這個代碼,你可以檢查這樣也.......................... .............................

<?php 
session_start(); 
if ($_SESSION['LoggedIn'] != true) 
{  

    // Redirect to login page. 
    header("Location: http://{$_SERVER['HTTP_HOST']}/2ndassign/login.php"); 
} 
else 
// Session not active. 
{ 

} 
?>