[英]Seeing “Cannot modify header information” error when attempting to redirect
我有一个基本的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()不会产生任何输出。 在打开<?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.'');
?>
应该工作正常。 只要确保您在此之前没有其他事情发生即可。 换句话说,没有<body>
, <title>
, <head>
或代码上方的任何内容。
如果您出于某种原因想要这样做,请确保您的php代码仍然高于一切。
示例:
<?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>
您好,更好的选择是您可以使用javascript window.location返回页面,例如echo'window.location =“ / reservations /?res = $ res&id = $ id”'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.