新聞中心
Ecshop退出登錄后會清空購物車的Bug優(yōu)化
作者 / 無憂主機 時間 2015-12-05 03:25:36
Ecshop退出登陸后,會清空購物車。熟知Ecshop的站長同學(xué)們應(yīng)該都知道有這樣的Bug問題,官方更新也一直未處理。網(wǎng)上類似的教程相當(dāng)多,很多都是無效的或者按照教程修改后網(wǎng)站報錯。說句不好聽的,很多文檔都是復(fù)制來復(fù)制去,至于文檔的有效性都未測試有效就發(fā)布于網(wǎng)絡(luò)上,這樣很容易讓新手站長誤入歧途。在此說明無憂主機官網(wǎng)所歸納的所有文檔,都會在php虛擬主機內(nèi)測試有效才會發(fā)布在官網(wǎng)中。但是由于版本更新導(dǎo)致文檔所介紹的功能失效,我們也會陸續(xù)更新。 完美解決:Ecshop退出登錄后會清空購物車的Bug優(yōu)化 1、文本編輯器(editplus)打開修改文件:includes/cls_session.php 查找:
if (!empty($GLOBALS['ecs'])) { $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id' ); }修改為:
if (!emptyempty($GLOBALS['ecs'])) { $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id' AND user_id = 0");//www.lyecs.com 只清空匿名** }2、文本編輯器(editplus)打開修改文件:includes/init.php 查找:
define('SESS_ID', $sess->get_session_id()); //判斷是否存在user_id的session,避免高版本PHP報錯 if(isset($_SESSION['user_id'])){ //如果存在會員登錄 if($_SESSION['user_id']>0){ //取得對應(yīng)user_id的session MD5碼,后面加入'@www.gle-technology.com'自定義的自符串加密。 $user_session=md5($_SESSION['user_id'].'@www.gle-technology.com'); //'@www.gle-technology.com'內(nèi)容可自行修改 //取得之前的session_id,www.gle-technology.com $old_session=$sess->get_session_id(); //如果會員的session_id和原先的session_id不同(則為新登錄情況),則將購物車內(nèi)原session_id的商品,更新為會員下的商品! if($user_session != $old_session){ $sql="update ".$GLOBALS['ecs']->table('cart')."set session_id='".$user_session."',user_id='".$_SESSION['user_id']."' where session_id='".$old_session."' "; $GLOBALS['db']->query($sql); } //定義新的會員唯一session_id define('SESS_ID',$user_session); }else{ //不存在會員,繼續(xù)用原有的session_id define('SESS_ID', $sess->get_session_id()); } }else{ //不存在會員,繼續(xù)用原有的session_id define('SESS_ID', $sess->get_session_id()); }3、同理,mobile/includes/init.php也改下。第2條是重點,已全部注釋。 無憂主機相關(guān)文章推薦閱讀: 如何在ECSHOP后臺管理的時候顯示擴展分類 ECSHOP修正RECIEVE.PHP判斷不嚴謹導(dǎo)致郵件自動確認收貨 ECSHOP如何實現(xiàn)自定義某某等級會員以上才支持貨到付款的方法
本文地址:http://www.gle-technology.com/ecshop/21058.html