首先,判断是否登录、
if(isset($_session[\’user_id\’])){
存在;
把用户id和商品id,加入购物车表
}else{
不存在;使用cookie把商品ID和主机IP放入一个数组

,把这个数组存入cookie;浏览器允许存放300个cookie,

每个cookie的大小为4KB,足以满足购物车的要求,同时也

减轻了服务器的负荷
}
假如浏览器把cookie禁用,使用memcache来实现

另一种方法,判断是否登录、
if(isset($memcache->get(\’user_id\’))){
存在;
把用户id和商品id,加入购物车表
}else{
不存在;
$memcache = new Memcache(); //实例化memchche
$data=[\’goods_id\’=>$goods_id,\’ip\’=>$_SERVER

[\’REMOTE_ADDR\’]];
$memcache->set(\’key键\’,serialize($data));
}

 redis实现与memcache没有太大的区别!

memcache代码如下

$cart=new Cart();
$goods_id = isset($_GET[\'goods_id\']) ? $_GET[\'goods_id\'] : \'1\';
$session = \yii::$app->session;
// $session->set(\'user_id\',\'1\');
$user_id = $session->get("user_id");
$mem = Yii::$app->cache;
if(isset($user_id)){
$data[\'user_id\'] = $user_id;
$data[\'goods_id\'] = $goods_id;
$is_add=$cart->setAttributes($data)->insert();
}else{
$data[\'user_id\'] = $_SERVER[\'REMOTE_ADDR\'];
$data[\'goods_id\'] = $goods_id;
$mem->set(\'data\',serialize($data));
}
unserialize($mem->get(\'data\')); //memcache数据

以上两种方法都可以实现,假如使用第一种的话,我们就得

设置cookie的失效时间,假如使用第二种的话,取值的时候

需要反序列化 unserialize() ,接着就可以拿到你要拿到的

数据了!

原博文:https://www.cnblogs.com/hangxing1996/p/6756650.html

版权声明:本文为cuculus原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cuculus/articles/9909256.html