PHP联系表单随机提交

时间:2012-10-10 02:53:54

标签: php contact-form

我希望我在这里遗漏了一些非常基本的东西但是:空表格随机提交,有时一天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>";
   }
?>

我在许多网站上使用此代码,但从未遇到过此问题。这段代码有什么明显的错误,我错过了吗?任何帮助将不胜感激!

2 个答案:

答案 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'])){

      }
?>