我是一个菜鸟程序员,所以我提前为任何明显的错误道歉。过去一周我一直在创建一个产品数据库。我已经明确了我可以使用表单添加产品,查看所有添加的产品等等。我正在使用通过表单输入数据创建的会话。我努力将删除产品页面包含在内,我尝试使用未设置来清除变量但却无法使用它。
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.
正确方向的任何一点都将受到赞赏!
答案 0 :(得分:67)
您可以使用以下方法取消设置会话变量:
session_unset
- 释放所有会话变量(等于使用:$_SESSION = array();
)unset($_SESSION['Products']);
- 仅在会话变量中取消设置产品索引。 (记住:你必须像功能一样使用,而不是像你使用的那样)session_destroy
- 销毁注册到会话的所有数据要了解使用session_unset
和session_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']);