我希望我在这里遗漏了一些非常基本的东西但是:空表格随机提交,有时一天3-8次,几天没有,依此类推。
空提交的电子邮件始终以主题为“[网站联系表单]”。尽管我的php中没有验证,但在html代码中,主题是从下拉菜单中选择的,默认为“常规查询”。请注意,在下面的php代码中,人们无法提交带有上述主题行的空表单,也就是说,如果我在没有输入任何内容的情况下按提交,它将始终是“[网站联系表单]一般查询”。 / p>
我有contact.html调用此contact.php文件:
<?
$email = 'info@mail.com';
$mailadd = $_POST['email'];
$headers = 'From: ' . $_POST['email'] . "\r\n";
$name = $_POST['name'];
$subject = '[Website Contact Form] ' . $_POST['subject'];
$message = 'Message sent from: ' . $name . '. Email: ' . $mailadd . '. Organization: ' . $_POST['company'] . '. Phone: ' . $_POST['phone'] . '. ';
$message .= 'Message: ';
$message .= $_POST['message'];
if (mail($email,$subject,$message, $headers)) {
echo "<p>Thank You! We'll get back to you shortly.</p>";
}
else {
echo "<p>Error...</p>";
}
?>
我在许多网站上使用此代码,但从未遇到过此问题。这段代码有什么明显的错误,我错过了吗?任何帮助将不胜感激!
答案 0 :(得分:3)
我怀疑您在发送电子邮件之前可能没有检查这些变量是否已设置。有人直接请求contact.php(没有任何表单数据)可能会产生您描述的结果。如果是这种情况,以下代码应该像魅力一样:
<?php
if (isset($_POST['submit']) {
// form code
}
else {
// The form was not submitted, do nothing
}
?>
即使不是那种情况,这种简单的检查也总是很好的做法。
此外,您应该始终将任何用户输入验证为一种好习惯。您不希望您的服务器充斥电子邮件收件箱。我建议使用正则表达式来验证提供的输入,并可能使用验证码服务(例如ReCaptcha)。
答案 1 :(得分:1)
如果你一直在使用这段代码而且工作正常,那么我会检查你用这种情况改变了哪些变量,例如你的提交表格。
尝试使用所有常见可能性的表单,看看它是否有效。空主题将为您的表单提供“[网站联系表格]”主题。检查您的脚本实际上是否为post变量,并且您的表单提交了正确的变量。您的下拉列表可能有一个值为“”的选项和innerHTML“常规查询”。该值将被提交。
检查服务器端的输入也很好
<?php
if(isset($_POST['subject'],$_POST['email'])){
}
?>