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