2013-03-21 68 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