代码之家  ›  专栏  ›  技术社区  ›  itarachiu

没有Session\u destroy的会话重置有效吗?

  •  -1
  • itarachiu  · 技术社区  · 7 年前

    我试图在不使用 session_destroy 因为我想传递信息信息。我的问题是,如果我的代码有效,我已经通过说出all来重置会话 $_SESSION 是空数组,或出于安全原因,使用 会话\u销毁 是必须的,但如果我使用session\u destoy,我无法通过 $_SESSION['msg'] 不再

    <?
    session_start();
    $_SESSION = array();
    //session_destoy();
    $_SESSION['msg'] = "You have logged out.";
    header('Location: index.php');
    ?>
    
    5 回复  |  直到 7 年前
        1
  •  2
  •   Danyal Sandeelo    7 年前

    你需要 session_unset()

    session\u unset只是清除会话以供使用。会话为 仍在用户计算机上。请注意,通过使用session\u unset 变量仍然存在。session\u unset仅删除所有会话 变量。它不会破坏会话。。。。所以这次会议 仍处于活动状态。

    通过: 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 ");
    

    在索引中。php文件

    if(isset($_GET['message']) && !empty($_GET['message'])){ 
      echo $_GET['message']; 
    }
    
        2
  •  1
  •   Himanshu Upadhyay    7 年前

    首先,您应该使用 session_unset(); 删除所有会话变量/值,而不是为其分配新数组。

    您的问题的主要答案:

    我建议使用 session_destroy() 因为它删除了生成的内部会话ID,该ID将在来自客户端设备的每个请求中进行验证。要验证这一点,只需使用函数打印会话ID echo session_id(); 以您的方式清空会话之前和之后。它将弹出相同的会话ID。 因此,先销毁它,然后再创建新的将是一个好主意。

    使用销毁会话后 会话\u销毁() 您可以再次启动新会话并设置消息 $_SESSION['msg'] 在里面。

        3
  •  1
  •   Deepak Singh    7 年前

    仅限用户 session_unset($_SESSION['session_name']); 希望这能奏效。

        4
  •  0
  •   Pepstille    7 年前

    你可以使用cookies;例如,您可以保留用户名、密码和用户的连接状态。当用户返回您的站点时,您知道他是谁,以及他是否已经连接。

    setcookie ("Msg", "you have logged out", time () + 3600);
    

    (对于一个小时的饼干,你可以把你想要的时间

        5
  •  0
  •   Deepak Singh    7 年前

    您的代码:

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

    这将显示您的邮件一次,并立即将其取消设置。