我想在以下方面寻求一些帮助。我得到的错误是:
警告:无法修改报头信息-报头已经由
发送这是我使用的代码:
<?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");
}
任何帮助都将非常感激,我已经看了很长时间了。
多谢
在你的页面顶部使用
<?php
ob_start("ob_gzhandler");
?>
-
如果可能的话,尽量避免
header
,如果它只是用来触发其他服务器请求。产生更多的等待时间和乒乓,干扰browser.back
等。尝试找到一种方法来执行settings.php?成功,无需另一个HTTP。 -
header()
仅在之前没有输出单个简单字符时有效。您可以在脚本的开头启动ob_start
,并在每个预期输出之前执行ob_end_clean
,特别是在header()
之前。