使用会话的php消息

时间:2014-03-02 20:20:05

标签: php session alert messagebox

我尝试使用php中的会话开发flash消息 假设成功删除查询我正在设置

$_SESSION["msg"]="record deleted successfully";
header("location:index.php");

我在所有检查msg变量是否可用的页面上都有以下脚本,它回显其值如下所示

if(isset($_SESSION["msg"]) && !empty($_SESSION["msg"]))
        {
            $msg=$_SESSION["msg"];
            echo "<div class='msgbox'>".$msg."</div>";
            unset($_SESSION['msg']); //I have issue with this line.
        }

如果我发表评论

unset($_SESSION['msg']);
正在显示

消息,但此行消息未显示
我做错了什么,或任何其他选择。

2 个答案:

答案 0 :(得分:4)

您说您在每个页面上都有该脚本。所以我的猜测是你制作标题后(“location:index.php”);您的代码继续运行 - 您的消息显示和未设置(由于重定向到index.php,您看不到它)。当您被重定向到index.php时,您的消息已被取消设置。

尝试添加退出;在标题之后(“location:index.php”);。

编辑:我将添加两个示例,一个工作,一个不工作。要测试您需要访问测试页面,请使用以下链接 - /index.php?delete=1

在此示例中,您永远不会看到消息。为什么?因为头函数不会停止代码执行。设置会话变量并设置重定向后,代码将继续执行。这意味着您的消息也被打印并且变量也未设置。当代码完成时,只进行重定向。页面加载并且不打印任何内容,因为会话变量在重定向之前未设置。

<?php
session_start();
// ... some code
if ($_GET['delete']==1) {
    $_SESSION["msg"] = "record deleted successfully";
    header("location: index.php");
}
// ... some code
if (isset($_SESSION["msg"]) && !empty($_SESSION["msg"])) {
    $msg = $_SESSION["msg"];
    echo "<div class='msgbox'>" . $msg . "</div>";
    unset($_SESSION['msg']);
}
// ... some code
?>

但是这段代码可能会按你的意愿运行。请注意,我在标题行后添加了退出。 您设置了消息,告诉您要重定向并告诉您停止脚本执行。重定向后,您可以根据需要打印和取消设置。

<?php
session_start();
// ... some code
if ($_GET['delete']==1) {
    $_SESSION["msg"] = "record deleted successfully";
    header("location: index.php");
    exit;
}
// ... some code
if (isset($_SESSION["msg"]) && !empty($_SESSION["msg"])) {
    $msg = $_SESSION["msg"];
    echo "<div class='msgbox'>" . $msg . "</div>";
    unset($_SESSION['msg']);
}
// ... some code
?>

您明确表示您在所有网页上都有该代码(邮件打印)。如果您的代码与我的示例类似,那么添加exit应该可以解决您的问题。

另一个问题可能是您正在进行多次重定向。

答案 1 :(得分:1)

您只需设置会话emptynull,而不是取消设置。只是做:

$_SESSION['msg']=NULL;

或者

$_SESSION['msg']="";