PHP:即使表格未填写,联系表格也会发送电子邮件?

时间:2014-12-29 21:40:54

标签: php html email contact contact-form

我已经在网站上工作了一段时间,我一直在用我的联系表单来解决这个问题。

所以我确保我包含" required"在联系表格上,如果表格没有填写,那就太棒了。它确保用户将信息放入字段中以便发送信息。

然而,在iOS上并非如此。那些必需的标签被忽略了,所以我构建了我的PHP以确保仍然需要输入。

希望有人可以帮助我。

以下是HTML联系表单:                  

        <input type="text" name="phone" class="phoneInput" autocomplete="off" placeholder="What phone number can we reach you at? (Optional)" /><br />

        <input type="email" name="email" class="emailInput" autocomplete="off" placeholder="What is your primary e-mail address?" required /><br />

        <textarea name="message" id="message" autocomplete="off" placeholder="How may we assist you?" required></textarea><br />

        <div class="submit">
            <input type="submit" value="SEND MESSAGE" id="button"/>
            <div class="ease"></div>
        </div>
    </form>

更新了PHP:

<?php

// Name of sender
$name=$_GET["name"];

// Phone number of sender
$number=$_GET["phone"]; 

// Mail of sender
$mail_from=$_GET["email"];

// Message
$message=$_GET["message"];

// Subject 
$subject= "Someone has sent you a message from your contact form!";

// Message Headers
$headers = 'From: ' .$name."\r\n". 'Reply-To: ' . $mail_from."\r\n" . 'Callback Number: '.$number."\r\n";

// E-mail to:
$to ='shawn@synergycomposites.net';

// Empty variables, tests to see if any of the fields are empty
$emptyName    = empty($name);
$emptyEmail   = empty($mail_from);
$emptyMessage = empty($message);

// Perform if tests to see if any of the fields are empty, and redirect accordingly
if ($emptyName == true) {
    header ("location:/#modalFailure");
} else {
    if ($emptyEmail == true) {
        header ("location:/#modalFailure");
    } else {
        if ($emptyMessage == true) {
            header ("location:/#modalFailure");
        } else {
            header ("location:/#modalSuccess");
            mail($to, $subject ,$message, $headers);
        }
    }
}
?>

1 个答案:

答案 0 :(得分:1)

在检查字段之前调用mail()函数。此功能实际上发送电子邮件。无论函数是否成功,返回变量$ send_contact都只是一个布尔值。这样的事情应该有效:

if(empty($name) || empty($mail_from) || empty($message)) {
  header('location:/#modalFailure');
} else {
  $mail_sent = mail($to, $subject ,$message, $headers);
  if(!$mail_sent) {
    header("location:/#modalFailure");
  } else {
    header("location:/#modalSuccess");
  }
}

如果表单提交非空字符串,则此代码将遇到问题。例如,此" "代替""NULL。最好将filteringvalidation添加到此代码中。

(另一方面,您可能希望使用$ _POST代替$ _GET进行表单提交。)