多个函数调用,只有最后一个成功。为什么?

时间:2009-11-23 22:09:37

标签: php cookies function

我将一个值数组存储在我的cookie中作为字符串(使用','作为分隔符)。我在自定义函数set_Cookie()中使用explode(),implode()和setcookie()方法更新它们,并且效果很好

function set_Cookie($name, $position, $value) {
    $cookie = ($_COOKIE[$name]);
    $cookie_exp = explode(",", $cookie);
    $cookie_exp[$position] = $value;
    $cookie_imp = implode(",", $cookie_exp);
    setcookie($name,$cookie_imp);
}

我遇到的唯一问题是当我尝试多次调用该函数时 - 只有最后一次调用才能成功更新值。换句话说:在下面的代码中,只有'position3'会更新'value3',但其他位置根本不会更新:

set_Cookie('cookie1','$position1','value1');
set_Cookie('cookie1','$position2','value2');
set_Cookie('cookie1','$position3','value3');

初始Cookie1值: 0,0,0

结果: 0,0,value3


我错过了什么?

3 个答案:

答案 0 :(得分:3)

致电setcookie不会更新$_COOKIE中的值。

答案 1 :(得分:1)

你的函数需要3个参数。看起来你没有在通话中通过这个位置。将值作为第二个参数传递会破坏您的cookie。

编辑: 您能告诉我们您cookie1的初始值,并为每个函数调用您发送的位置值以及结果是什么?另外,尝试只进行前两次调用,在另一种情况下,进行4次调用,看看值是仅在最后调用时更改的情况是否仍然存在。

答案 2 :(得分:0)

将greg的观点放入代码:

function set_Cookie($name, $position, $value) {
    $cookie = ($_COOKIE[$name]);
    $cookie_exp = explode(",", $cookie);
    $cookie_exp[$position] = $value;
    $cookie_imp = implode(",", $cookie_exp);
    setcookie($name,$cookie_imp);

    $_COOKIE[$name] = $cookie_imp;
}