没有session_destroy的会话重置有效吗?

时间:2018-04-02 06:47:16

标签: php session

我正在尝试在不使用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');
?>

5 个答案:

答案 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']);
}
?>

这将显示您的消息一次并立即取消设置。