PHP mail()验证

时间:2014-10-01 03:06:56

标签: php

所以我仍然相对较新的PHP,并且已经构建了一个订单表单,可以在发送之前验证字段,以及检查垃圾邮件。 从测试以下代码在返回错误等方面工作正常,但是当我输入正确的信息时,我没有收到任何电子邮件。 在我将Vaildation部分添加到它之前它工作正常,但现在我正在解决上面的问题。我仍在学习,所以任何指针都会很好,谢谢

<?php
    function spamcheck($field) {
      $field=filter_var($field, FILTER_SANITIZE_EMAIL);
      if(filter_var($field, FILTER_VALIDATE_EMAIL)) {
        return TRUE;
      } else {
        return FALSE;
      }
    }
    ?>
    <?php
    if (!isset($_POST["submit"])) {
      ?>

表格

<?php } 
else 
{
    if (isset($_POST["email"])) {
        $mailcheck = spamcheck($_POST["email"]);
        if ($mailcheck==FALSE) {
            echo "Invalid input";
            }
//field vailation
        else {
            if (isset($_POST['submit'])) {
                $errors = array();
                if (!empty($_POST["fullname"])) {
                    $fullname = $_POST["fullname"];
                    $pattern = "/^[a-zA-Z0-9\_]{2,20}/";
                    if (preg_match($pattern,$fullname)){ $fullname = $_POST["fullname"];}
                        else{ $errors[] = 'Your Name can only contain _, 1-9, A-Z or a-z 2-20 long.';}
                        } else {$errors[] = 'You forgot to enter your First Name.';}

                if (!empty($_POST["contact"])) {
                    $contact = $_POST["contact"];
                    $pattern = "/^[0-9\_]{6,20}/";
                    if (preg_match($pattern,$contact)){ $contact = $_POST["contact"];}
                        else{ $errors[] = 'Your contact number can only be numbers, or is too short';}
                        } else {$errors[] = 'You forgot to enter your contact number.';}
            }
//end vaildation
            else{
                $fullname = $_POST["fullname"];
                $email = $_POST["email"];
                $address = $_POST["address"];
                $address2 = $_POST["address2"];
                $town = $_POST["town"];
                $postcode = $_POST["postcode"];
                $contact = $_POST["contact"];
                $shipping = $_POST["shipping"];
                $extra = $_POST["extra"];
                $extra = wordwrap($extra, 70);

                $message = '
                Full Name: ' . $fullname . '
                Delivery Address: ' . $address . '
                Delivery Address2: ' . $address2 . '
                Town/City: ' . $town . '
                Postal Code: ' . $postcode . '
                Contact: ' . $contact . '
                Email Address: ' . $email . '
                Special instructions: ' . $extra . '
                Shipping Method: ' . $shipping . '
                ';
                mail("myemail@myaddress.com","Order form",$message,"email: $email\n");
                echo 
                "<html>
                <body><br><br>
                Order successful, we will be in contact shortly<br>
                </body>
                </html>";
            }
        }
    }
}
?>

<?php 
if (isset($_POST['submit'])) {
    if (!empty($errors)) { 
        echo '<hr /><h3>The following occurred:</h3><ul>'; 
        foreach ($errors as $msg) { echo '<li>'. $msg . '</li>';}
        echo '</ul><h3>Your mail could not be sent due to input errors.</h3><hr />';}
        else{echo 
        "<html>
        <body><br><br>
        Order successful, we will be in contact shortly<br>
        </body>
        </html>";
    }
}
?>

使用error_reporting(E_ALL);之后我注意到我在第二个代码块顶部的其他地方收到错误unexpected 'else' (T_ELSE),所以我尝试将代码转移到:

<?php
error_reporting(E_ALL);
if (!isset($_POST["submit"])) {
} 

else 
{

然后离开上面的表单,这样当按下sumbit按钮时,表格不会消失。哪个没有给我任何错误,但仍然没有提交电子邮件

0 个答案:

没有答案