PHPMailer后备验证

时间:2018-03-11 04:09:08

标签: php validation user-interface error-handling phpmailer

我需要一些有关此PHPmailer配置代码的帮助,以便在出于任何原因Jquery验证失败或Javascript被禁用的情况下提供简单表单验证。

的SUCCESS部分工作!
意思是,表单提交按预期发送两封电子邮件,&显示"发送电子邮件!"提交者。

ERROR部分工作!
意思是,如果 任何 字段为空,则表单提交 发送任何电子邮件 < em>和 显示任何,但是提交者的空白页面。

编辑:更正 - 我刚做了另一轮测试&amp;发现如果电子邮件字段为空,则第一个Catch正在捕获。但那就是它。我宁愿第二次捕获,以及其他必需的字段。这必须是PHPMailer内置的东西。 /编辑。

1)如果我想要的表单字段为空,我希望在第二个catch显示中将自定义错误消息提交给提交者。在这个例子中,我想要&#34; name&#34; &安培; &#34;电子邮件&#34;字段(更多以实际形式)而不是&#34;消息&#34;字段。

有人建议我使用您在function validateEmpty下面看到的catches代码,但我无法让它发挥作用。我是否在脚本中的错误位置或使用它做了其他错误?

2)在我看来,这个function validateEmpty部分只适用于&#34;名称&#34;字段,我必须复制它为&#34;电子邮件&#34; &安培;任何其他必填字段?或者是否有更好的方法来添加我想要的表单字段&#34; required&#34;这个功能块?

3)还建议我使用use error_log()记录任何错误消息。我怎么做?是什么产生了我在ftp目录中其他地方看到的错误消息的文本文件?

4)有人还建议使用an $error & $success flag。什么是&amp;如果与我在这里做的事情有所不同,我该怎么做呢?

5)最后,我可以通过提交带有空字段的表单轻松测试第二个Catch。我不确定如何测试第一次捕获;是可能的,甚至值得做什么?

<?php
if (isset($_POST['submit'])) {

    date_default_timezone_set('US/Central');

    require 'PHPMailer-5.2.26/PHPMailerAutoload.php';

    function sendemail(
            $SK_emailTo, 
            $SK_emailSubject, 
            $SK_emailBody
            ) {

        $mail = new PHPMailer(true);

        $mail->setFrom('myEmail@gmail.com', 'My Name');

        $mail->addReplyTo($_POST['email'], $_POST['name']);

        $mail->addAddress($SK_emailTo);
        $mail->Subject  = $SK_emailSubject;
        $mail->Body     = $SK_emailBody;
        $mail->isHTML(true);

        $mail->isSMTP();
        $mail->Host = 'smtp.gmail.com';
        $mail->SMTPAuth = true;
        $mail->SMTPSecure = 'tls';
        $mail->Port = 587;
        $mail->Username = 'myEmail@gmail.com';
        $mail->Password = 'myPwd';

        return $mail->send();

    } //end function sendemail

    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];

    try {
        sendemail(
            'myEmail@address.com', 
            'First email subject', 
            'Form results to me...
             <br><br>'.$message
        );
        sendemail(
            $email, 
            'Second email subject', 
            'Confirmation email to person who submitted the form... 
             <br><br>'.$message
        );
        echo 'Email sent!';
    } //end try

    catch (phpmailerException $e) { //catches PHPMailer errors
        echo 'There is a problem; the message did NOT send. Please go back and check that you have filled in all the required fields and there are no typos in your email address.';
        echo $e->errorMessage();
    } 
    catch (Exception $e) { //catches validation errors
        echo 'There is a problem; the message did NOT send. Please either go back and try again or contact us at email@address.com';
        echo $e->getMessage();
    }

    function validateEmpty($string, $name = 'name') {
        $string = trim($string);
        if ($string == '') {
            throw new Exception(sprintf('%s is empty.', $name));
        }
    }

} //end if submit
?>

谢谢你的时间&amp;专业知识!

PS:是的,这是另一篇文章的重复,我认为让人感到困惑的是人们停止了帮助...... Form to Email PHP Validation fallback using PHPMailer

0 个答案:

没有答案