为了账号安全,请及时绑定邮箱和手机立即绑定

如何在刷新时停止 phpmailer 多次重新发送?(并显示错误信息)

如何在刷新时停止 phpmailer 多次重新发送?(并显示错误信息)

PHP
偶然的你 2022-10-14 14:37:09
当我刷新页面时,phpmailer 总是重新发送电子邮件。我做了什么?用过 header("Location: home.php");但是我怎样才能对 home.php 进行定位并显示我的错误消息 $error = "Thank you for message!";if($mail->send()){    header("Location: home.php");    $error = "Thank you for message!";} else {    $error .= "Error {$mail->ErrorInfo}";}问题是当我做标题时它没有显示错误信息......<div class="text-center impact"><?php echo $error; ?></div>
查看完整描述

3 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

您可以传递 aGET-parameter以便在页面重新加载时检查它。试试这个代码示例:


if($mail->send()){

    header("Location: home.php?success");

} else {

    $error .= "Error {$mail->ErrorInfo}";

在您的页面上:


<div class="text-center impact">

<?php echo isset($_GET['success']) ? "Thank you for message!" : $error; ?>

</div>


查看完整回答
反对 回复 2022-10-14
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

你没有$error在你的页面之间传递变量,所以当你回显它时,它没有被定义,你不会得到任何输出。您需要通过 URL 查询参数传递它:


header("Location: home.php?error=" . rawurlencode($error));

然后在该页面上检索它:


echo $_GET['error'];

或者通过会话变量传递它(可能是更好的选择):


$_SESSION['errors'] = $error;

header("Location: home.php");

接着:


echo $_SESSION['error'];


查看完整回答
反对 回复 2022-10-14
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

您不会看到它,因为您的浏览器会在您看到它之前立即重定向。

超级简单的解决方案是重定向到: header("Location: send-confirmation.php");

带有消息已发送的信息。当然,您可以做更高级的解决方案并将 apropiate 参数传递给主页或在您的 phpmailer 页面上使用 cookie/session 以避免重复发送。


查看完整回答
反对 回复 2022-10-14
  • 3 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信