我现在正在制作购物车,我成功地使用php编写并读取了一个cookie,但是我无法添加多个数据,如何在我的购物车中添加1个以上的商品?
我猜我会给我们一个阵列,但如何使用它与cookie一起工作?我的意思是如何从我的cookie文件中读取数组。或者也许有更简单的方法来解决我的问题?
<?
setcookie("id", $id);
setcookie("howmany", $howmany);
header('Location: http://localhost/shop/index.php?page=shop&id='.$id);
exit;
?>
像这样阅读
<?
echo('u add id'.$_COOKIE["id"].' as'.$_COOKIE["howmany"].' thank you');
?>
答案 0 :(得分:1)
你不应该使用cookies。
将所有内容全部保存在用户会话中,并仅将会话ID指定为cookie。 如果服务器单独了解用户活动数据并且仅告知用户是否有必要就足够了。
其他一切都是不安全的,而且除了你重新加载页面之外,如果被拒绝,你就会知道一些令人讨厌的问题。
也可以在不知道useraccount /密码的情况下访问Cookie,如果他们没有及时到期,您可以看到同一台PC的其他用户在不久前购买或尝试购买的内容。
我无法想象你想要那个,是吗?
答案 1 :(得分:0)
COOKIE有大小和数量限制,所以你可以试试SESSION
参考 What is the maximum size of a web browser's cookie's key?
答案 2 :(得分:0)
我认为会话是更好的选择,因为它更容易使用且更安全。
因此,如果您想在cookie中存储数组,可以使用json_encode
/ json_decode
php函数。
假设你有一个数组:
$arr = array(1, 2, 3);
要将其保存在cookie中,您必须写:
setcookie('some_key', json_encode($arr));
并修改:
$arr = json_decode($_COOKIE['some_key']);
$arr[0] = 4;
setcookie('some_key', json_encode($arr));
使用会话更容易。在脚本开头的某处你可以写:
session_start();
然后简单地说:
$_SESSION['some_key'] = array(1, 2, 3);
$_SESSION['some_key'][0] = 4;
但有一点需要注意:session_start
必须在任何输出之前调用,例如:echo 'some text'
。
最好将session_start
放在脚本的最开头。
如果你想要从javascript访问这些数据,那么cookie只是一个不错的选择,就是这样。
祝你好运<强>更新强> 有关php会话的更多信息,请阅读here