会话数组未设置

时间:2015-11-06 13:34:42

标签: php session

我想取消设置会话数组,但它没有发生。 我在哪里错了?

if(isset($_SESSION['id']) && isset($_POST['processorder']))
{

    $chk = $_SESSION['id'];

    $query="update order_details set process_order='1' where id IN(".implode(',',$chk).")";
    mysql_query($query) or die(mysql_error());

    unset($chk);

}

5 个答案:

答案 0 :(得分:3)

$chk = $_SESSION['id'];

您在这里做的是创建一个变量$chk,其值为$_SESSION['id'],然后取消设置此$chk,但您从未触及$ _SESSION var。

为此,您需要拥有以下代码:

$_SESSION['id'] = '';
unset($_SESSION['id']);

答案 1 :(得分:2)

像这样使用php unset: -

unset($_SESSION['id']);
unset($_SESSION['processorder']);

或者您可以使用session_destroy()

  

将删除与该用户关联的所有数据。

不是unset($chk);

答案 2 :(得分:0)

$chk只是引用变量。您需要unset原始变量。

unset($_SESSION['id']);

答案 3 :(得分:0)

使用 NULL unset 删除$_SESSION[]个变量中保存的值,例如:

$_SESSION['id'] = NULL;
unset($_SESSION['id']);

如果你把

$_SESSION['id'] = ''; 

以防 ''两个引号之间有空格,然后

if(isset($_SESSION['id'])){} 

返回 true 而不是 false

注意:您也可以使用 session_destroy() 功能,但销毁所有保存的会话数据。

答案 4 :(得分:0)

取消设置$chk实际上并不影响原始数组。你可以使用引用来做到这一点。但请记住,取消设置引用本身也不会影响原始数组。这应该有效:

$session = &$_SESSION;
unset($session[id']);

如果您需要对$ _SESSION执行许多操作,这可能很有用 - 应该让您的代码更具可读性