Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测是否发生PHP异常,并根据该异常输出flash消息_Php_Html_Swiftmailer - Fatal编程技术网

检测是否发生PHP异常,并根据该异常输出flash消息

检测是否发生PHP异常,并根据该异常输出flash消息,php,html,swiftmailer,Php,Html,Swiftmailer,我正在使用Swiftmailer发送电子邮件,目前我有一个try/catch块,根据Swift\u RfcComplianceException查看电子邮件地址是否有效。我当前捕获错误并在屏幕上输出$e->getMessage()错误。在电子邮件的表单提交中,我设置了一个变量,如果电子邮件发送成功,则会弹出一条成功消息 问题:如何使用相同的flash消息区域根据我的Swiftmail文件是否捕获了异常来输出错误消息。我如何使这发生在同一页上?我不是在使用AJAX,而是在回发页面。现在我得到的只是

我正在使用Swiftmailer发送电子邮件,目前我有一个try/catch块,根据Swift\u RfcComplianceException查看电子邮件地址是否有效。我当前捕获错误并在屏幕上输出$e->getMessage()错误。在电子邮件的表单提交中,我设置了一个变量,如果电子邮件发送成功,则会弹出一条成功消息

问题:如何使用相同的flash消息区域根据我的Swiftmail文件是否捕获了异常来输出错误消息。我如何使这发生在同一页上?我不是在使用AJAX,而是在回发页面。现在我得到的只是一个带有文本的白色屏幕,我希望错误消息出现在表单提交的位置。多谢各位

HTML

PHP


您只需从“主”PHP代码中移动错误消息设置行

session_start();
if (isset($_POST['submit_email'])) {
    require_once 'views/Swiftmail.php';
}
到您的Swiftmail.php文件

try {
    // Create a message
    $message = (new Swift_Message($_POST['subject']))
        ->setFrom('ME@YOU.COM')
        ->setTo($finalEmailList) //Array of email address
        ->setBody($_POST['message'], 'text/html')
        ->setReplyTo('you@me.com');
    $_SESSION['message']= "Email Sent Successfully";
} catch (Swift_RfcComplianceException $e) {
    $_SESSION['email_error'] = "Invalid Email Address Entered";
}

仅供参考,大多数现代PHP框架都内置了flash消息组件。

到底是什么阻止了您以相同的方式设置消息?如果电子邮件成功通过,因此它重定向回同一页面,则会出现成功消息,然后会吐出一条消息。如果电子邮件发送失败,异常会停止表单提交,并且基本上在异常捕获块上消失,只会吐出错误消息,而不会继续返回提交表单的同一页面。异常块中所需的元素是什么?@Laif,您是指上面的html div(错误)?“异常停止表单提交”不,它没有。表单已在该点提交。
catch
之后的所有事情仍将发生(除非您在
catch
中明确地
死亡
退出
,而您上面的代码没有显示您正在这样做)因此,只需在
catch
中设置错误消息。那么,在我的“主PHP”中,我是否只需删除2$_会话['message']和$_会话['email_error'],但保留if(isset($_POST['submit_email']){main中的require once'views/Swiftmail.PHP';}?现在我得到了这个错误:“未定义的变量:第54行的消息”:$result=$mailer->send($message);“嗯,这不在上面的代码中,听起来像是一个不同的问题/问题。但您似乎需要备份并学习一些基本的调试技能。“未定义变量”错误就是他们所说的错误;您正在尝试使用一个未定义的变量(至少不在您尝试使用它的范围内)。有关此类错误的问题几乎总是作为的副本关闭。不客气。请注意对我上述评论的编辑。
if (isset($_POST['submit_email'])) {
        require_once 'views/Swiftmail.php';
        $_SESSION['message']= "Email Sent Successfully";
        $_SESSION['email_error'] = "Invalid Email Address Entered";
}
session_start();
if (isset($_POST['submit_email'])) {
    require_once 'views/Swiftmail.php';
}
try {
    // Create a message
    $message = (new Swift_Message($_POST['subject']))
        ->setFrom('ME@YOU.COM')
        ->setTo($finalEmailList) //Array of email address
        ->setBody($_POST['message'], 'text/html')
        ->setReplyTo('you@me.com');
    $_SESSION['message']= "Email Sent Successfully";
} catch (Swift_RfcComplianceException $e) {
    $_SESSION['email_error'] = "Invalid Email Address Entered";
}