Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “看见”;无法修改标题信息";尝试重定向时出错_Php_Email_Header - Fatal编程技术网

Php “看见”;无法修改标题信息";尝试重定向时出错

Php “看见”;无法修改标题信息";尝试重定向时出错,php,email,header,Php,Email,Header,我有一个基本的PHPmail()脚本,它通过电子邮件向用户发送他们刚刚提交的表单的详细信息。PHP可以将所有数据插入数据库,但在数据处理完成后,如果我想重定向它们,就会出现问题 我目前正在使用: mail($email, $subject, $message, $headers); header('Location: '/reservations/?res='.$res.'&id='.$id.''); 但它抛出了这个错误: Warning: Cannot modify header

我有一个基本的PHP
mail()
脚本,它通过电子邮件向用户发送他们刚刚提交的表单的详细信息。PHP可以将所有数据插入数据库,但在数据处理完成后,如果我想重定向它们,就会出现问题

我目前正在使用:

mail($email, $subject, $message, $headers);

header('Location: '/reservations/?res='.$res.'&id='.$id.'');
但它抛出了这个错误:

Warning: Cannot modify header information - headers already sent

我知道你不能发送多个邮件头,但是有没有办法区分邮件头和位置头呢?我不想使用JavaScript重定向,因为它太慢而且滞后。我在某个地方读到了关于ob_start(),但我不知道这是否必要……

mail()不会生成任何输出。在打开
修改HTTP头之前,文件顶部可能有一些空白,这要求它尚未发送。当第一次输出发生时就会发生这种情况

因此,为了避免HTTP头被发送,您需要在调用
头之前避免任何输出,或者需要对其进行缓冲,以便它不会被发送(请特别参阅)

导致发送HTTP头的输出发生在错误消息(“输出从文件开始”)中的位置‍:‍行“)。

在邮件功能之前添加“@”符号,这将解决您的问题


寄信

更好的选择是,您可以使用javascript window.location返回页面 喜欢
echo'window.location=“/reservations/?res=$res&id=$id”

这将仅抑制任何可能的错误消息。如果邮件有错误(我们不知道是否有),最好修复它。
@mail($email, $subject, $message, $headers);
header('Location: /reservations/?res='.$res.'&id='.$id);
<?php
mail($email, $subject, $message, $headers);
header('Location: '/reservations/?res='.$res.'&id='.$id.'');
?>
<?php
mail($email, $subject, $message, $headers);
header('Location: '/reservations/?res='.$res.'&id='.$id.'');
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Send mail</title>
</head>

<body>
</body>
</html>