以下代码用于向用户提供电子邮件的用户发送电子邮件。
$from_whom_header = mysqli_real_escape_string($connect, 'noreply@test.com'); //setting a static from field
$from_whom = mysqli_real_escape_string($connect, $_POST['your_email']); // this is used to pass the email of the person sending the email into the subject line and body of email
$headers = 'From:'.$from_whom_header; //passing in static address stated above
$subject_email = $from_whom.'mentioned you in their latest post!';
$body_email = '//email text...';
if(@mail($to, $subject_email, $body_email, $headers))
{
echo ' emailing...';
}
else
{
$oh_noes_2 = '<div class="error">'.'error sending mail'.'</div>';
}
header('Location: email_success.php');
无论出于何种原因,header命令都不起作用。我正在使用对象缓冲(ob_start()等),我尝试将此脚本放在ob开始标记下,仍然没有结果。
我的问题是,在邮件功能中使用的$ header和用于重定向的header命令之间是否存在PHP混淆?
对于某些上下文,这个脚本是在一些验证逻辑之后出现的,我将echo'emailing ...'测试放在那里进行调试,甚至当header命令嵌套在那里并且echo证明了mail命令是工作,它仍然不想重定向。
答案 0 :(得分:0)
更改代码的这一部分:
if(@mail($to, $subject_email, $body_email, $headers))
{
/* Don't output anything before using header, otherwise you'll get errors.
echo 'emailing...';*/
header('Location: email_success.php');
}
else
{
$oh_noes_2 = '<div class="error">'.'error sending mail'.'</div>';
}
请记住,在任何实际输出之前必须调用header() 通过普通HTML标记,文件中的空行或PHP发送。 使用include或require读取代码是一个非常常见的错误, 函数或其他文件访问函数,并且有空格或空 调用header()之前输出的行。一样的问题 使用单个PHP / HTML文件时存在。
答案 1 :(得分:0)
错误记录后,我发现在PHP.ini的session.save_path字符串中错误配置了某些内容。我能够编辑它并解决问题。在页面底部抛出错误后发现问题,说路径错误且无法打开会话变量。
向前推进可能会在以后看到此问题的任何人,如果未设置会话变量,请根据评论人员的建议,确保以下内容属实。