花魁直播高品质美女在线视频互动社区 - 花魁直播官方版

 歡迎來到素材無憂網(wǎng),按 + 收藏我們
登錄 注冊 退出 找回密碼

ecshop購物車商品根據(jù)cookie長久保存商品插件

時間: 2024-02-25 10:43 閱讀: 作者:素材無憂網(wǎng)

默認的ecshop購物車存在一個很大的弊端:
1、當我們不登錄將商品加入購物車后,等登錄后再看,發(fā)現(xiàn)購買車沒有了先前加入的商品。
2、當我們在公司登錄后將商品加入購物車,回到家后支付,購物車中的商品沒有了。
為解決此問題,最終決定采用根據(jù)cookie來保存商品,而摒棄了根據(jù)IP來保存商品的方法。
原因是IP很多時候并不是固定的,當我們下班回到家,或者去咖啡廳等轉(zhuǎn)換了上網(wǎng)地點時,這個時候IP也跟著變了,
如果是cookie,只要您的筆記本沒變,信息就會依然保存著,顯而易見,根據(jù)cookie保存商品信息遠勝過根據(jù)IP。
功能概述:
1、未登錄情況下,根據(jù)cookie ,可以使購物車中的商品一直保存7天。
2、登錄后,之前未登錄時添加到購物車中的商品仍舊保存在購物車中,避免再次添加。
3、用戶退出后,購物車依然保存7天。
4、用戶再次登錄時,購物車自動顯示之前所添加的商品(包括未登錄時添加到購物車的商品),并按日期排序。
5、購物車中的商品一般默認保存7天,這樣避免了用戶是大,購物車信息過量導致網(wǎng)站 能下降。
1,includescls_session.php
換IP時不影響購物車
將用戶的IP存入Cookie,或者在生成SESSION時,不取IP。這步修改對動態(tài)IP用戶無法使用購物車也同時解決。這里IP存入Cookie的有 效期是10天,也就是10后購物車依然被清空了。如果想保留更久或更短,可以把864000改為其它數(shù)字。一般來說購物車數(shù)據(jù)留10天已足夠了,10天了 還未下單,基本上就不會下單了。而10后購物車清空,不會造成數(shù)據(jù)庫壓力。
找到
$this->_ip = real_ip();
注釋,換成下面代碼
//購物車 by neo
if(isset($_COOKIE['real_ipd']) && !empty($_COOKIE['real_ipd']))
{
$this->_ip = $_COOKIE['real_ipd'];
}
else
{
$this->_ip = real_ip();
setcookie("real_ipd", $this->_ip, time()+864000, $this->session_cookie_path);
}
繼續(xù)找
setcookie($this->session_name, $this->session_id . $this->gen_session_key($this->session_id)
把 0 改成 time()+86400*10
setcookie($this->session_name, $this->session_id . $this->gen_session_key($this->session_id), time()+86400*30, $this->session_cookie_path, $this->session_cookie_domain, $this->session_cookie_secure);//購物車 by neo
設(shè)置session_id的cookie保存10天,購物車和session都是根據(jù)這個值來獲取的,如果丟失會重新生成一個,購物車的東西自然就找不到了
繼續(xù)找
function destroy_session()
把里面的
setcookie($this->session_name, $this->session_id, 1, $this->session_cookie_path, $this->session_cookie_domain, $this->session_cookie_secure);
if (!empty($GLOBALS['ecs']))
{
$this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id'");
}
都注釋掉。這是退出登錄的時候,刪除cookie,刪除購物車的
2,admin/privilege.php
" WHERE session_id NOT " . db_create_in($valid_sess);
改成
" WHERE add_time < ".($time-86400*30)." AND session_id NOT " . db_create_in($valid_sess);
管理員登陸時不清空購物車。
3,includeslib_main.php
找到
function update_user_info()
在函數(shù)最里面加入
//購物車 by neo
$sql = "update ".$GLOBALS['ecs']->table('cart')." set user_id =".$_SESSION['user_id']." where session_id = '".SESS_ID."'";
$GLOBALS['db'] -> query($sql);
$sql1 = "update ".$GLOBALS['ecs']->table('cart')." set session_id ='".SESS_ID."' where user_id = '".$_SESSION['user_id']."'";
$GLOBALS['db'] -> query($sql1);
$re = $GLOBALS['db'] -> getAll("select *,sum(goods_number) as goods_number from ".$GLOBALS['ecs']->table('cart')." where user_id = '{$_SESSION['user_id']}' and session_id = '".SESS_ID."' group by goods_id");
if($re)
{
foreach ($re as $k => $v)
{
$sql = "update ".$GLOBALS['ecs']->table('cart'). " set goods_number = ".$v['goods_number']." where rec_id = ".$v['rec_id'];
$GLOBALS['db'] -> query($sql);
$sql = "delete from ".$GLOBALS['ecs']->table('cart')." where rec_id <> {$v['rec_id']} and user_id = '{$_SESSION['user_id']}' and session_id = '".SESS_ID."' and goods_id = ".$v['goods_id'];
$GLOBALS['db'] -> query($sql);
}
}
會員到別處登錄,獲取之前的購物車商品出來。

版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除!謝謝!

轉(zhuǎn)載請注明: ecshop購物車商品根據(jù)cookie長久保存商品插件

標簽: ecshop購物車  
相關(guān)文章
推薦文章
模板推薦