首页 > 解决方案 > 如何在 PHP 中执行多个操作并且只将标头发送回客户端一次?

问题描述

我的网站上有一个表单,它使用POST. 除其他外,PHP 然后使用带有 SMTP 的 PHPMailer 发送邮件。使用 确定邮件是否成功$success = $mail->send();。然后基于该结果,我想将某些详细信息保存在 cookie 中。

当我来设置 cookie 时setcookie($cName, $cVal, time()+(60*60*24*365), "/", "", 0);,我收到错误消息告诉我Cannot modify header information - headers already sent by...

PHPMailer 按预期工作 - 发送了一封电子邮件。当我注释掉 PHPMailer 行时, setcookie() 按预期工作 - 设置了一个 cookie。我猜 PHPMailer 和 setcookie() 都会自动将标头发送回客户端。

PHPMailer 中是否有一个选项可以在不将标头写回客户端的情况下发送邮件?我认为可能$mail->SMTPDebug = 2;会导致发送标头,但我将其更改为 0 仍然是同样的问题。

我可以让 setcookie() 只更新标头信息而不实际发送标头吗?

基本上,我希望 PHP 在将任何标头发送回客户端之前执行其所有操作。我可以控制何时发回标头吗?...当我们在处理它时,发回的实际信息?

标签: phphttp-headerssmtpphpmailersetcookie

解决方案


推荐阅读