PHP取消设置会话变量

时间:2016-06-02 08:32:32

标签: php session

我是一个菜鸟程序员,所以我提前为任何明显的错误道歉。过去一周我一直在创建一个产品数据库。我已经明确了我可以使用表单添加产品,查看所有添加的产品等等。我正在使用通过表单输入数据创建的会话。我努力将删除产品页面包含在内,我尝试使用未设置来清除变量但却无法使用它。

ADD Product页面,用于设置会话变量:

$_SESSION['Products'][] = $_POST; //is how i set the session on the add products page. 

unset $_SESSION['Products'][]; //is how i have tried to clear the session although it does not work.

正确方向的任何一点都将受到赞赏!

7 个答案:

答案 0 :(得分:67)

您可以使用以下方法取消设置会话变量:

  1. session_unset - 释放所有会话变量(等于使用:$_SESSION = array();
  2. unset($_SESSION['Products']); - 仅在会话变量中取消设置产品索引。 (记住:你必须像功能一样使用,而不是像你使用的那样)
  3. session_destroy - 销毁注册到会话的所有数据
  4. 要了解使用session_unsetsession_destroy之间的区别,请阅读此SO answer。这有帮助。

答案 1 :(得分:6)

取消设定是一项功能。因此,您必须提交必须销毁的变量。

unset($var);

在你的情况下

unset ($_SESSION["products"]);

如果您需要重置整个会话变量,只需调用

session_destroy ();

答案 2 :(得分:3)

如果您想完全清除会话,可以使用此功能:

  <protection>

     <create name="domain1/domain2/>

     <allowed name="domain1"/>

     <allowed name="domain2"/>

  </protection>

实际上两者都不是必要的,但并没有伤害。

如果您只想清除特定部分,我认为您需要这个:

session_unset();
session_destroy();

取决于您的需求。

答案 3 :(得分:3)

销毁PHP会话

可以通过session_destroy()函数破坏PHP会话。该函数不需要任何参数,一次调用可以销毁所有会话变量。如果要销毁单个会话变量,则可以使用unset()函数取消设置会话变量。

以下是取消设置单个变量的示例

<?php    unset($_SESSION['counter']); ?>

这里是将销毁所有会话变量的调用

<?php    session_destroy(); ?>

答案 4 :(得分:1)

unset是一个函数,而不是运算符。像unset($_SESSION['key']);一样使用它来取消设置该会话密钥。但是,您也可以使用session_destroy();。 (确保也开始使用session_start();

答案 5 :(得分:1)

如果有人出于与我相同的原因来访问此页面,我还会提供此答案。我只是在浪费大量时间来寻找问题所在。我正在打电话:

unset($_SESSION['myVar']);

从注销脚本中。然后导航到需要登录的页面,服务器仍然认为我已登录。问题是注销脚本未调用:

session_start();

取消会话变量var无效,除非您先启动会话。

答案 6 :(得分:1)

// set
$_SESSION['test'] = 1;

// destroy
unset($_SESSION['test']);