2

我的网站上有一个表格,我已将其包含在页面的侧边栏中。基本上它所做的是收集一些数据,如果这些数据已正确填写,它会将其传递到另一个页面上的更大表单。

问题是,我在提交时不断收到“标头已发送”错误。奇怪的是,表单在我的开发服务器上运行良好。

基本上我的代码是这样的;

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

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

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

记住我必须检查错误,是否有另一种方法可以在不使用 header() 的情况下重定向到网站上的另一个页面?

4

2 回答 2

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();
    }
}
?>

不是我选择的设计(总是更好地从标题重定向),但有时很有用。

于 2013-03-21T12:39:17.330 回答
2

任何发送或修改 HTTP 标头的函数都必须在任何输出之前调用,否则如您所见,它将失败。

在下面的链接中有一个很好的帖子/解释。 如何修复 PHP 中的“标头已发送”错误

于 2013-03-21T12:16:04.533 回答