ecshop2.7.2是购物车中的商品保存一个月的时间
1.在includes/cls_session.php中找到 function cls_session(...)
在函数结尾出setcookie(...)的地方把 0 改成 time()+86400*30
,session_id的cookie保存一个月,购物车和session都是根据这个值来获取的,如果丢失会重新生成一个,购物车的东西自然就找不到了
2.找到
function gen_session_key($session_id)
最后一句改成
return sprintf('x', crc32(ROOT_PATH . $ip . $session_id));
3,找到 function destroy_session()把下面这段代码去掉,这是退出登录的时候,删除cookie,
setcookie($this->session_name, $this->session_id, 1, $this->session_cookie_path, $this->session_cookie_domain, $this->session_cookie_secure); /* ECSHOP 自定义执行部分 */ if (!empty($GLOBALS['ecs'])) { $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id'"); } /* ECSHOP 自定义执行部分 */
4.找到 function gen_session_id(),整个改成下面的代码:
function gen_session_id() { do { $this->session_id = md5(uniqid(mt_rand(), true)); $rs = $this->insert_session(); if ($rs !== false) { return $rs; } $error_no = $this->db->errno(); if ($error_no > 0 && $error_no != 1062) { die($this->db->ErrorMsg()); } } while ($error_no == 1062); }
5.修改admin/privilege.php中的function clear_cart(),替换为
function clear_cart() { $sql = "SELECT DISTINCT session_id " . "FROM " . $GLOBALS['ecs']->table('cart') . " AS c, " . $GLOBALS['ecs']->table('sessi**') . " AS s " . "WHERE c.session_id = s.sesskey "; $valid_sess = $GLOBALS['db']->getCol($sql); // 删除cart中无效的数据 $time = gmtime(); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') . " WHERE add_time < ".($time-86400*30)." AND session_id NOT " . db_create_in($valid_sess); $GLOBALS['db']->query($sql); }
浙公网安备 33010602011771号