重定向后显示消息

Nak*_*hon 5 php redirect

我试图在我的项目中成功重定向后显示一条消息,但找不到真正好的方法。现在我有一个非常简单但不是很好的解决方案,如下所示:

// Things happened:
$Alert = dangerMessage("Heyho, I am a message!");
header('refresh: 1.5 ; url = index.php');
Run Code Online (Sandbox Code Playgroud)

我的 riskMessage 是预定义 Alertbox 的简单回显:

function dangerMessage($text) {
    return "<div class='alert alert-danger alert-dismissable fade show mt-4'>
    <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>".$text."</div>";
}
Run Code Online (Sandbox Code Playgroud)

它只是显示一个带有文本的小框。

无论如何,就像我说的,这是我现在的“简单”解决方案,它运行良好,但不是最好的解决方案。我知道,你应该把一个die();exit();之后header(),但我的问题是,当我将它们放在我header()的页面是空白的只是1.5秒,重定向,并显示没有消息框。

有没有办法让一个体面/良好的重定向也显示我的消息?

lxg*_*lxg 7

一种优雅而常见的方法是使用 flash 消息。这基本上是一个一次性会话条目,它在一个请求中设置并在下一个请求中传递,然后立即删除。考虑以下示例。

在重定向页面上,您在会话对象中设置 flash 消息:

$_SESSION["flash"] = ["type" => "success", "message" => "You are great!"];
Run Code Online (Sandbox Code Playgroud)

在目标页面上,检查是否有 Flash 消息。如果是,输出并删除它。

if (isset($_SESSION["flash"]))
{
    vprintf("<p class='flash %s'>%s</p>", $_SESSION["flash"]);
    unset($_SESSION["flash"]);
}
Run Code Online (Sandbox Code Playgroud)

注意:该示例假设您已经在使用 PHP 会话。如果没有,您必须先启动会话