2013-03-21 67 views
2

我有我已經包含在頁面上的側邊欄上我的網站形式。基本上它所收集的是一些數據,如果這些數據已被正確填入,它會將它傳遞給另一頁上的較大表單。WordPress的 - 錯誤:頭已經發出已

的問題是,我一直當它被提交得到「已經發送了頭」的錯誤。奇怪的是,這個表單在我的開發服務器上工作正常。

基本上我的代碼如下所示;

<?php 
    if($_SERVER['REQUEST_METHOD'] == 'POST'){ 

     // Checks for errors are here (omitted for brevity) 

     if(!$errors){ 
      header('Location:'.bloginfo('url').'?page_id=xxx'); 
     } 
    } 
    ?> 

銘記,我要檢查錯誤,是沒有辦法,我可以重定向到該網站的其他頁面,而無需使用標頭的另一種方式()?

+0

你讀過[這](http://stackoverflow.com/a/8028987/1401975)? – HamZa 2013-03-21 12:02:36

+0

是的,用javascript:'' – darma 2013-03-21 12:02:54

+0

感謝HamZa,是的,但我只是在編碼之後! ;) – mrbubbles 2013-03-21 12:04:43

回答

2

發送或修改HTTP標頭必須,否則,你見過會失敗的任何輸出之前調用的任何功能。

有這個在下面的鏈接好的帖子/解釋。 How to fix "Headers already sent" error in PHP

+0

謝謝Atallon。我明白,現在在任何其他輸出之前必須使用header()。那麼解決方案是在我的頭檢查$錯誤,然後從那裏重定向? – mrbubbles 2013-03-21 12:19:15

+0

如果您可以在任何代碼輸出之前添加$ errors的檢查,那麼它應該可以解決您的問題。 – llanato 2013-03-21 12:47:30

+0

太棒了,謝謝。 – mrbubbles 2013-03-21 12:48:14

2

沒問題,你可以使用鍵/值從$_POST生成重定向:

<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST'){ 

    // Checks for errors are here (omitted for brevity) 

    if(!$errors){ 
     $xxx = 'valueofxxxhere'; 
     echo '<script>document.location="'.bloginfo('url').'?page_id='.$xxx.'";</script>'; 
     die(); 
    } 
} 
?> 

不是我設計的選擇(總是更好地從頭部重定向),但有時是有用的。

+0

感謝Darma的回答,雖然和你一樣,我更喜歡用header(),所以我會在任何輸出之前嘗試在標題中做這件事。 – mrbubbles 2013-03-21 12:46:25