PHP表单提交发送空白电子邮件
在我的网站上手动提交表单后,我的收件箱中会出现一封带有该主题的电子邮件。电子邮件的主题正确地作为“反馈表提交”发送,但电子邮件本身是空白的。我的表格上没有正文,也没有邮箱中的输入 表格:PHP表单提交发送空白电子邮件,php,html,forms,Php,Html,Forms,在我的网站上手动提交表单后,我的收件箱中会出现一封带有该主题的电子邮件。电子邮件的主题正确地作为“反馈表提交”发送,但电子邮件本身是空白的。我的表格上没有正文,也没有邮箱中的输入 表格: 电子邮件: 评论: PHP: 您的正则表达式无效。您正在表达式中使用分隔符,但无法执行此操作。如果使用报告,则应该抛出一个错误警告:preg\u replace():未知修饰符“您可以简单地使用过滤器变量($email\u a,filter\u VALIDATE\u email)@Ron我认为正则表达式
电子邮件:
评论:
PHP:
您的正则表达式无效。您正在表达式中使用分隔符,但无法执行此操作。如果使用报告,则应该抛出一个错误<代码>警告:preg\u replace():未知修饰符“您可以简单地使用过滤器变量($email\u a,filter\u VALIDATE\u email)
@Ron我认为正则表达式正在删除任何潜在的头注入,而不是验证地址。看起来问题中没有包含这些问题。我建议从电子邮件中硬编码,看看是否有效。我还建议输出$feedback并查看它是否被设置。@user3783243这是正确的,正则表达式的目的是删除头注入。我是否正确理解删除分隔符
将解决此问题?这是我读这篇文章的收获:
<form action="feedback-form.php" method="post" enctype="text/plain">
E-mail:<br>
<input type="text" class="textForm" name="email_address" size="35"><br>
Comment:<br>
<textarea name="feedback" class="textForm" rows="6" cols="35"></textarea><br><br>
<input type="submit" id="submit" class="button" value="Send">
</form>
<?php
#Receive user input
$email_address = $_POST['email_address'];
$feedback = $_POST['feedback'];
#Filter user input for invalid characters
function filter_email_header($form_field)
{
return preg_replace('/[nr|!/<>^$%*&]+/', '', $form_field);
}
$email_address = filter_email_header($email_address);
#Send email
$headers = "From: $email_address";
$sent = mail('me@website.com', 'Feedback Form Submission', $feedback, $headers);