我将一个值数组存储在我的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
我错过了什么?
答案 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;
}