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

当我刷新页面时,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>


偶然的你
浏览 94回答 3
3回答

回首忆惘然

您可以传递 aGET-parameter以便在页面重新加载时检查它。试试这个代码示例:if($mail->send()){&nbsp; &nbsp; header("Location: home.php?success");} else {&nbsp; &nbsp; $error .= "Error {$mail->ErrorInfo}";}&nbsp;在您的页面上:<div class="text-center impact"><?php echo isset($_GET['success']) ? "Thank you for message!" : $error; ?></div>

繁星淼淼

你没有$error在你的页面之间传递变量,所以当你回显它时,它没有被定义,你不会得到任何输出。您需要通过 URL 查询参数传递它:header("Location: home.php?error=" . rawurlencode($error));然后在该页面上检索它:echo $_GET['error'];或者通过会话变量传递它(可能是更好的选择):$_SESSION['errors'] = $error;header("Location: home.php");接着:echo $_SESSION['error'];

紫衣仙女

您不会看到它,因为您的浏览器会在您看到它之前立即重定向。超级简单的解决方案是重定向到: header("Location: send-confirmation.php");带有消息已发送的信息。当然,您可以做更高级的解决方案并将 apropiate 参数传递给主页或在您的 phpmailer 页面上使用 cookie/session 以避免重复发送。
打开App,查看更多内容
随时随地看视频慕课网APP