我是HTML和PHP(一切)的初学者。
我有4种类型的字段(评论表):
从列表中选择一个(选项标签)
输入文字(例如姓名)
输入评论(textarea)
复选框(勾选全部或一个或无)
我有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(我有功能查找英文单词并将英文单词发送到我的电子邮件中,因为不是每个人都可以阅读泰语):
$language = $_POST['language'];
if (strpos($language, 'English')){
$language = "English";
}elseif (strpos($language, 'Chinese')){
$language = "Chinese";
}else{
$language = "Thai";
}
你可能已经注意到,如果一个人没有选择一种语言,那么由于if功能,它将是泰语。
我在过去测试了评论表单并且他们工作了。最近,我开始收到几乎空或完全空的电子邮件。通常,2封电子邮件(我刚才提到的电子邮件类型)会同时进入。
这些电子邮件有什么共同之处:
复选框从不点击
您可以在其中输入要填写的字词
在一次提交中,只有2件事可以看到同时选择的2个选择字段,然后我收到的第二个提交将是一封甚至没有选择的电子邮件。
我不明白的事情:
我有java脚本,以防止在电子邮件和名称字段中没有任何内容,但不知何故电子邮件仍然以空名和电子邮件发送给我?
为什么这些电子邮件会同时进入?
不应该是一种语言,但我会假设它是因为在我的英文形式的php中它没有if函数(我忘了把它放进去,因此触发的电子邮件不是来自同一个表单。可能一个是英语形式,一个是中文形式。
这是某种机器人吗?垃圾邮件?或谷歌检查我的网站?
答案 0 :(得分:5)
此特定请求是使用已禁用Javascript的浏览器,并且您的所有验证都只是客户端Javascript,因此提交的空白表单很好。简单!
您对所有4个问题的回答是还要添加服务器端验证(在本例中为PHP)
例如
if(empty($_POST["name"]))
{
die("You did not enter a name, we can not send email");
}
其他字段相同
一旦你这样做,你会注意到机器人仍然可以提交你的表单有时使用垃圾邮件/虚假信息(虽然空白信息问题将得到解决)。此时请搜索称为 CAPTCHA
的内容将服务器/客户端验证视为街道起点处的Gaurd和主门锁。只是因为街道入口处通常有一名警卫,所以你不能一直打开门,以确保安全。你必须确保在你的门上只有合适的人进入你的家,不管那个警卫。
答案 1 :(得分:0)
您可以使用此代码更具体,如果您在post值中避免空格,则使用trim函数
if(empty(trim($_POST["name"])))
{
echo 'Please enter your name';
die();
}