我在我的网站

时间:2016-08-30 07:30:46

标签: javascript php html forms email

我是HTML和PHP(一切)的初学者。

我有4种类型的字段(评论表):

  1. 从列表中选择一个(选项标签)

  2. 输入文字(例如姓名)

  3. 输入评论(textarea)

  4. 复选框(勾选全部或一个或无)

  5. 我有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封电子邮件(我刚才提到的电子邮件类型)会同时进入。

    这些电子邮件有什么共同之处:

    1. 复选框从不点击

    2. 您可以在其中输入要填写的字词

    3. 在一次提交中,只有2件事可以看到同时选择的2个选择字段,然后我收到的第二个提交将是一封甚至没有选择的电子邮件。

    4. 我不明白的事情:

      1. 我有java脚本,以防止在电子邮件和名称字段中没有任何内容,但不知何故电子邮件仍然以空名和电子邮件发送给我?

      2. 为什么这些电子邮件会同时进入?

      3. 由于if函数,
      4. 不应该是一种语言,但我会假设它是因为在我的英文形式的php中它没有if函数(我忘了把它放进去,因此触发的电子邮件不是来自同一个表单。可能一个是英语形式,一个是中文形式。

      5. 这是某种机器人吗?垃圾邮件?或谷歌检查我的网站?

2 个答案:

答案 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();
}