2011-07-25 226 views
0

我正在使用MAMP,NetBeans在我的Mac上開發php網站。我寫了下面的代碼,但反覆出錯。我嘗試了所有註釋行,但都沒有工作。Header not working PHP

<?php 
if ($output == 1) //Authenticated = yes 
{ 

    $url = "http://www.google.com」; 
    //error_reporting(E_ALL); ini_set('display_errors', 'On'); 
    // 
    // include('./dlheader.inc'); 

    //header("Content - Length: 0"); 
    // header("Location: http://google.com", true, 303); 
    // header("Location:".$url); 
    // header("Location: http://google.com", true); 
    // exit; 

    /*   flush(); 
      if (headers_sent()) { 
die('cannot send location header (anymore)'); 
} 
    else { 
    header('Location: '.$url); 
    die(); 
} 

*/ 
    //echo '<html><head><meta http-equiv="refresh" content="1;url=' . $url . '"/>; 

} 
?> 

此代碼恰好在<body>標記後面。感謝您的幫助提前。

+3

什麼是你的錯誤:

您可以用函數headers_sent()布爾結果檢查呢? – Jim

+1

而你的錯誤是? –

+1

這是個問題很少的問題。爲了確保良好的反應,您應該包括預期結果('我想加載google.com')和實際結果('我得到以下錯誤消息:等等等等等等) – Erik

回答

11

如果這正是你的代碼,你需要修復這個引用。它看起來像是從網站或文字處理器複製/粘貼的。

$url = "http://www.google.com」; 
          ^^^^ 

應該

$url = "http://www.google.com"; 

因爲它不是一個正確的雙引號,PHP不會看到字符串爲被關閉,所有後續的代碼被視爲字符串的一部分,直到另一個"是遇到。

5

如果php標籤之前的空格在文件中,那麼header()將不起作用。在header()之前,php文件中不會出現任何空白區域或任何輸出,或者它不會工作,因爲頭文件已經被髮送。

if(headers_sent()) 
{ 
    echo "headers already sent!"; 
} 
+0

除非輸出緩衝打開。但它通常不是默認的。該問題指出該代碼位於body標籤之後。所以在上面的答案中提到的輸出將是開頭的html,頭標和開頭體標籤。 – Josh