为什么这会给我一个无法修改标题信息的错误?

时间:2014-05-04 09:54:54

标签: php mysql

我想请求以下一些帮助。我得到的错误是:

警告:无法修改标头信息 - 已由

发送的标头

这是我正在使用的代码:

<?php
    if (isset($_GET['success']) === true && empty($_GET['success']) === true) 
    {
        echo 'Your details have been updated!';
    } 
    else 
    {
        if (empty($_POST) === false && empty($errors) === true) 
        {               
            $newevent = array(
                'title'         => $_POST['title'],
                'discription'   => $_POST['discription'],
                'event_date'    => $_POST['event_date'],
                'time'          => $_POST['time'],
                'contact_name'  => $_POST['contact_name'],
                'contact_num'   => $_POST['contact_num'],
                'username'      => $_POST['username']
            );

            new_event($session_user_id, $newevent);
            header('Location: settings.php?success');
            exit();

        } else if (empty($errors) === false) {
            echo output_errors($errors);
        }
    }
?>

这是new_event函数:

function new_event($user_id, $newevent) {
    $event = array();
    array_walk($newevent, 'array_sanitize');

    foreach($newevent as $field=>$data) {
        $event[] = '`' . $field . '` = \'' . $data . '\'';
    }

    mysql_query("UPDATE `event` SET " . implode(', ', $event) . " WHERE `username` = $user_id");
}

非常感谢任何帮助,我已经看了好几年了。

非常感谢

2 个答案:

答案 0 :(得分:0)

在页面顶部使用此功能

<?php
ob_start("ob_gzhandler");
?>

答案 1 :(得分:0)

  1. 如果可能,请尝试避免使用header,如果它仅用于触发其他服务器请求。它会产生更多的等待时间和乒乓,干扰browser.back等。尝试找到一种方法来执行settings.php?成功而不需要其他HTTP。

  2. header()仅在以前没有输出单个简单字符时才有效。您可以在脚本开头ob_start开始,并在每个预期输出之前ob_end_clean,{尤其是header()之前。{{1}}。

相关问题