我正在为我的个人网站制作一份简单的反馈提交表单。我收到以下错误
警告:无法修改标头信息 - 已发送的标头 (输出始于 /home/content/92/9339092/html/Pages/ArabicRootMachine/feedbackTEST.php:200) 在 /home/content/92/9339092/html/Pages/ArabicRootMachine/feedbackTEST.php 在线226 *
我尝试添加ob_start()来缓冲任何输出,但这不起作用。如果我在php脚本的开头放置header()调用,表单工作并发送电子邮件,但它不会重定向到感谢页面。你们中的任何一个优秀的哺乳动物愿意轻松过去,看看是否有任何明显可能引发这种错误的东西?
注意:第200行是脚本的开头(php打开标记),第226行是标题调用。
<?php
include('./includes/title.inc.php');
require_once('./includes/recaptchalib.php');
$public_key = '****************************************';
$private_key = '****************************************';
$errors = array();
$missing = array();
// check if the form has been submitted
if (isset($_POST['send'])) {
// email processing script
$to = 'blahblah@gmail.com';
$subject = 'Feedback on Root Machine';
// list expected fields
$expected = array('name', 'email', 'comments');
// set required fields
$required = array('name', 'email', 'comments');
// create additional headers
$headers = "From: My Next Bit<feedback@mynextbit.com>\r\n";
$headers .= 'Content-Type: text/plain; charset=utf-8';
$response = recaptcha_check_answer($private_key, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']);
if (!$response->is_valid) {
$errors['recaptcha'] = true;
}
require('./includes/processmail.inc.php');
if ($mailSent) {
header('Location: http://www.mynextbit.com/Pages/ArabicRootMachine/thank_you.php');
exit();
}
}
?>
如果您需要查看**。inc.php文件中的任何一个,请告诉我。我非常感谢任何帮助。
答案 0 :(得分:0)
你不能这样做
header('Location: ...
如果你这样做
include('./includes/title.inc.php');
一旦发送了标题,就无法使用PHP函数header
。
请记住,在发送任何实际输出之前必须调用
header()
,无论是普通HTML标记,文件中的空行还是PHP。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()
之前输出空格或空行。
答案 1 :(得分:0)
您的include或require文件可能在使用标头之前发送实际输出。
“请记住,在发送任何实际输出之前,必须通过普通的HTML标记,文件中的空行或PHP来调用header()。使用include或require读取代码是一个非常常见的错误。函数或其他文件访问函数,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题。 PHP.NET在http://php.net/manual/en/function.header.php
答案 2 :(得分:0)
header("Location: link")
应该在任何显示内容的html内容或函数之前(echo,print ..)
将发送电子邮件的内容移至您的页面顶部是必须的。