1. 程式人生 > >ecshop退出登入會清空購物車的bug優化,最完美解決方法

ecshop退出登入會清空購物車的bug優化,最完美解決方法

ecshop退出登陸後,會清空購物車,大家都應該知道有這樣的勉強算bug的問題。 網上類似的教程相當多,但都有問題,說句不好聽的,算是引新手入歧途!

總結網上方法如下:

1、修改init.php,把sess_id繫結ip的。老楊點評:各種紊亂不解釋。

2、修改cls_session.php,讓user_id不為0的購物車商品在退出時不刪除,修改lib_main.php,將購物車中sess_id換成新的session_id。 老楊點評:算是到了點子上的改法,但是在不同設定或瀏覽器訪問時,會照成其它裝置上的出問題!必須重新登入才能解決!在手機流行的年代,如果手機和pc同時登入,或兩臺電腦檯時登入,你會崩潰的,登了這邊,那邊購物車就空了,除非重新登入!

3、其它的方法,各種坑,不再列舉。

方法:

1、修改includes/cls_session.php 找到(268行左右):

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、找到includes/init.php

    define('SESS_ID', $sess->get_session_id());

替換為:

    //判斷是否存在user_id的session,避免高版本PHP報錯  
if(isset($_SESSION['user_id'])){ //如果存在會員登入 if($_SESSION['user_id']>0){ //取得對應user_id的session MD5碼,後面加入'@lyecs.com'自定義的自符串加密。 $user_session=md5($_SESSION['user_id'].'@lyecs.com'); //'@lyecs.com'內容可自行修改 //取得之前的session_id,www.lyecs.com $old_session=$sess->get_session_id(); //如果會員的session_id和原先的session_id不同(則為新登入情況),則將購物車內原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{ //不存在會員,繼續用原有的session_id define('SESS_ID', $sess->get_session_id()); } }else{ //不存在會員,繼續用原有的session_id define('SESS_ID', $sess->get_session_id()); }

3、同理,mobile/includes/init.php也改下。第2條是重點,已全部註釋

相關推薦

ecshop退出登入購物車bug優化完美解決方法

ecshop退出登陸後,會清空購物車,大家都應該知道有這樣的勉強算bug的問題。 網上類似的教程相當多,但都有問題,說句不好聽的,算是引新手入歧途! 總結網上方法如下: 1、修改init.php,把sess_id繫結ip的。老楊點評:各種紊亂不解釋。 2、修改cls_session.php,讓use

document.write() 為什麽頁面

alt str details body 瀏覽器 覆蓋 nload 遇到 加載 很久以前遇到的問題,放著放著就忘記去研究了最近看到一篇文章總結一下作者:abloumeurl: http://blog.csdn.net/u013451157/article/details

Vue中解決陣列在被的情況下頁面仍存在快取資料的問題

一,情況描述 1.1 點選完成按鈕 1.2 發現該資料沒有被清空 二,問題所在 2.1 查詢出來的陣列為null 由於使用父子件傳輸的方式進行傳遞資料,因為父元件從介面獲取資料的時候,當獲取到的資料為空,就會變成null。然後將這個

退出APP、任務棧、殺掉主程序

private static boolean finishAndRemoveAllTasks() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {

jspel表示式會話管理cookiesession技術session的建立和銷燬/購物車

第一部分:jsp入門和el表示式入門 1、jsp的入門 1.1 什麼是jsp: (1)sun公司用於動態網站開發技術 servlet ,因為使用servlet如果向頁面輸出內容很麻煩, 有了jsp,使用jsp向頁面輸出內容很方便,jsp就是servl

AngularJS+購物車+全選+sort排序

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t

Newbe.Claptrap 框架入門第二步 —— 簡單業務購物車

接上一篇 Newbe.Claptrap 框架入門,第一步 —— 建立專案,實現簡易購物車 ,我們繼續要了解一下如何使用 Newbe.Claptrap 框架開發業務。通過本篇閱讀,您便可以開始嘗試使用 Claptrap 實現業務了。 開篇摘要 本篇,我通過實現 “清空購物車” 的需求來了解一

怎麽恢復手機中誤的文件 手機數據恢復方法

隨著手機辦公越來越方便快捷化,手機也成為辦公的重要工具,裏面也保存著我們的重要文件數據。當我們在清理手機數據的時候,總是會誤清空手機裏的文件數據,比如上學期間,學習發的各種活動通知和考試安排。這文件被清空,就真的很麻煩。那我們該怎麽恢復手機中被誤刪除的文件呢? 強力數據恢復軟件是一款

jQuery復選框下拉框輸入框

下拉 div edi 賦值 rop 更改 check sele bsp 在做前端頁面是有時需要清空或者更改一些input輸入框,select下拉框,checkbox復選框,還有普通div,span包裹的值,特別是使用ajax的時候,更需要這些 清空id為靜態aaa的 inp

回收站的檔案也可以找回來嗎?

相信大家的windows系統的回收站都是放置於系統盤的吧,回收站的檔案過多會影響我們系統盤的使用的,所有大多是人都有清除回收站資料的習慣,但是總會遇到想要找回的時候呀。**superrecovery**的誤清空回收站資料恢復功能對資料進行恢復處理。【當然,超級資料恢復軟體的誤清空回收站資料恢

oracle truncate 表遇ora-02266錯誤的解決辦法

ORA-02266“唯一/主鍵被啟用的外部關鍵字引用”。 今天遇到怪問題,要truncate 的表沒有外來鍵關聯,使用delete table_name 可以刪除,使用truncate確報錯,真是奇怪!? 解決辦法: 1.主鍵失效;alter table table_na

怎麼arraylist的值乾淨嗎

package Test;import java.util.ArrayList;import java.util.List;public class ClearList {    public static void main(String[] args){        L

input file選擇檔案上傳後選擇框檔案資訊兩種解決方案

上傳檔案時,選擇了檔案後想清空檔案路徑。用兩種方法解決  <input type="file" id="fileupload" name="file" /> 第一種: var obj =

TokeyTyrant (TT Server) ULog 管理,資料以及結構優化

        TT Server 做為比較方便的KV系統,他提供了Memcache協議進行資料操作,但是沒有提供API來作為對其的一個管理機制,他只提供了Shell的方式管理,並且文件相對來說比較少,所以我自己寫了一個TTServer的 Ulog 清理和資料庫自動清空的指令

C# DataGridView控制元件資料完美解決方法

C# DataGridView控制元件繫結資料後清空資料 在清除DataGridview的資料時: 1.DataSource為NULL(DataGridView.DataSource= null;)這樣會將DataGridView的列也刪掉。   2.用DataGridvi

VC快速樹控制元件(CTreeCtrl)所有記錄的方法,DeleteAllItems的使用

VC6中快速清空樹控制元件(CTreeCtrl)所有記錄的方法:    DeleteAllItems清空記時會很慢.解決的方法是使用SetRedraw函式與之配合,用於提高速度.    ctrTree.SetRedraw(FALSE);   //使樹控制元件不可重畫   ct

回收站數據恢復原來是這麽簡單

裝包 文件 mage 註冊 接下來 fff 影響 18C 軟件 回收站清空數據恢復,在回收站中有過多的文件存在的時候,用戶根據情況判斷會對大量的無用文件進行清空的操作,清空後文件就做永久刪除性質了,如果其中有較重要的文件一並刪除的話,各位知道回收站清空的數據怎麽恢復嗎?  

學校 iPad 使用學校google帳號登入Google Drive 提示"裝置政策提醒"的解決方法

因為學校iPad 是給學生和老師使用,大多數是不需要設定鎖屏密碼的,然後 Gsuite 預設是開啟 “行動管理服務” 的策略為基本,就是需要裝置設定鎖屏密碼以保障資料安全,不那麼容易被竊取。 然後就出現了下圖的警告提示,並且就算登入了也是無法正常使用的,解決方法:1. 設定iPad 的鎖屏密碼即可,簡單有效

執行登入觸發器(sql server 2016限制IP訪問)後登入sql server報錯: 由於執行觸發器,登入失敗已將資料庫上下文更改為master。解決方法:用cmd執行刪除登入觸發器

背景: 在cmd中執行osql命令: osql -S 【資料庫伺服器】 -E  -i  mysql.sql 其中mysql.sql內容如下: CREATE LOGIN test WITH PASSWORD = '輸入密碼' GO

在Angular輸入框內按下回車觸發其它button的點選事件的解決方法

將不需要觸發事件的button上新增type="button"即可<button type="button" (click)="clickMe()">click</button>參考:https://stackoverflow.com/question