我尝试使用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']);
正在显示消息,但此行消息未显示
我做错了什么,或任何其他选择。
答案 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)
您只需设置会话empty
或null
,而不是取消设置。只是做:
$_SESSION['msg']=NULL;
或者
$_SESSION['msg']="";