我正在尝试在不使用session_destroy
的情况下销毁会话,因为我想要传递信息消息。我的问题是,如果我的代码有效,我已经通过说所有$_SESSION
是一个空数组来重置会话,或者出于安全原因使用session_destroy
是必须的但如果我使用session_destoy我无法通过$_SESSION['msg']
了。
<?
session_start();
$_SESSION = array();
//session_destoy();
$_SESSION['msg'] = "You have logged out.";
header('Location: index.php');
?>
答案 0 :(得分:2)
您需要session_unset()
session_unset只是清除会话以供使用。会议是 仍在用户计算机上。注意,通过使用session_unset, 变量仍然存在。 session_unset只删除所有会话 变量。它不会破坏会话....所以会议会 仍然活跃。
via:http://php.net/manual/en/function.session-unset.php
然后你可以像
那样做$_SESSION['msg'] = "You have logged out.";
以便将msg
添加到会话中。
或者您也可以这样做:
$msg ="Whatever the message is";
header("Location: index.php?message=$msg ");
在index.php文件中
if(isset($_GET['message']) && !empty($_GET['message'])){
echo $_GET['message'];
}
答案 1 :(得分:1)
首先,您应该使用session_unset();
删除所有会话变量/值,而不是为其分配新数组。
您的查询的主要答案:
我建议使用session_destroy()
,因为它会删除生成的内部会话ID,该会话ID将在来自客户端设备的每个请求中进行验证。要验证这一点,只需在执行清空会话之前和之后使用函数echo session_id();
打印会话ID。它会使相同的会话ID成为可能。
因此,首先销毁它然后创建新的将是一个好主意。
使用session_destroy()
销毁会话后,您可以再次开始新会话并在其中设置消息$_SESSION['msg']
。
答案 2 :(得分:1)
只是用户const destroyer = (arr, ...args) => {
return arr.filter(item => args.indexOf(item) < 0);
};
const result = destroyer([1, 2, 3, 1, 2, 3], 2, 3);
console.log(result);
希望这会有效。
答案 3 :(得分:0)
您可以使用cookies;你会保留用户名,密码和用户的连接状态。当用户返回您的网站时,您知道他是谁以及他是否已经连接。
setcookie ("Msg", "you have logged out", time () + 3600);
(对于一小时的cookie,你可以把你想要的时间......)
答案 4 :(得分:0)
您的代码:
<?
session_start();
$_SESSION = array();
//session_destoy();
$_SESSION['msg'] = "You have logged out.";
header('Location: index.php');
?>
索引页面中的执行以下操作:
<?php
if(!empty($_SESSION['msg']) && isset($_SESSION['msg'])){
echo $_SESSION['msg'];
unset($_SESSION['msg']);
}
?>
这将显示您的消息一次并立即取消设置。