我是 HTML 和 php(所有方面)的初学者。
我有 4 种类型的字段(评论表):
从列表中选择一个(选项标签)
输入文字(例如姓名)
输入评论(文本区域)
复选框(勾选全部或一个或无)
我有 Javascript(防止姓名和电子邮件留空):
<script>
function validateForm1() {
var x = document.forms["form_contact"]["name"].value;
if (x == null || x == "") {
alert("Name must be filled out");
return false;
}
var x = document.forms["form_contact"]["email"].value;
if (x == null || x == "") {
alert("Email must be filled out");
return false;
}
}
</script>
我有一个语言字段,您可以从中选择一种语言。我还有 3 种语言的网站,其中一种是英语。那些不是英文的有单独的 php 文件。
泰语网站的语言字段:
<option></option>
<option>thai language written in thai and then thai language written in english</option>
<option>english language written in thai and then english language written in english</option>
<option>mandarin language written in thai and then mandarin language written in english</option>
我的 php for thai form(我有 if 函数来查找英文单词并将英文单词发送到我的电子邮件,因为不是每个人都能阅读泰语):
$language = $_POST['language'];
if (strpos($language, 'English')){
$language = "English";
}elseif (strpos($language, 'Chinese')){
$language = "Chinese";
}else{
$language = "Thai";
}
您可能已经注意到,如果一个人没有选择语言,由于 if 函数,它将选择泰语。
我过去测试过评论表单并且它们有效。最近,我开始收到几乎是空的或完全空的电子邮件。通常,会同时收到 2 封电子邮件(我刚才提到的电子邮件类型)。
这些电子邮件的共同点:
复选框从未被点击
你可以在哪里输入单词来填充总是空的
您只能看到两件事,即在一次提交中同时选择了 2 个选择字段,然后我收到的第二次提交将是一封电子邮件,甚至没有进行任何选择。
我不明白的地方:
我有 java 脚本来防止电子邮件和名称字段中没有任何内容,但不知何故,电子邮件仍然以空名称和电子邮件地址发送给我?
为什么这些邮件同时进来?
由于 if 函数不应该是一种语言,但我认为这是因为在我的英语表单的 php 中它没有 if 函数(我忘了把它放进去)所以触发的电子邮件是'来自相同的表格。可能同时有一个英文形式和一个中文形式。
这是某种机器人吗?垃圾邮件?或谷歌检查我的网站?
最佳答案
此特定请求是使用禁用了 Javascript 的浏览器进行的,并且您的所有验证都只是客户端 Javascript,因此提交空白表单就可以了。很简单!
您对所有 4 个问题的回答是还要添加服务器端验证(在本例中为 PHP)
例如
if(empty($_POST["name"]))
{
die("You did not enter a name, we can not send email");
}
其他领域同理
执行此操作后,您会注意到机器人有时仍然可以使用垃圾邮件/虚假信息提交您的表单(尽管空白信息问题将得到解决)。届时请搜索名为CAPTCHA
的内容将服务器/客户端验证视为街道起点和主门锁处的 Gaurd。仅仅因为您的街道入口处通常有守卫,您就不能一直开着门以为它是安全的。你必须确保在你的门上只有合适的人才能进入你的家,而不管那个守卫。
关于javascript - 我从我网站上的评论表单中收到空电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39221387/