失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php后台维护岗位周记 工作周记 | php外包与php技术服务商

php后台维护岗位周记 工作周记 | php外包与php技术服务商

时间:2024-05-14 13:01:48

相关推荐

php后台维护岗位周记 工作周记 | php外包与php技术服务商

工作周记

ecshop 的购物车机制,当用户打开网站时会在session表产生一条seesion,登陆时更新这条seession。此时如果用户将商品添加至购物车,就会在 cart表中添加以session_id为Id的商品数据。而用户退出登录时系统会调用destroy_session()函数,清购物车。函数部分如 下:(cls_session.php文件中)

function destroy_session()

{.此处省略部分代码

$this->db->query(‘DELETE FROM ‘ . $GLOBALS[‘ecs’]->table(‘cart’) . ” WHERE session_id = ‘$this->session_id’“);

此处省略部分代码

所以此时退出购物车就被清空了

具体实现代码:

1.cls_session.php

function destroy_session()

{.此处省略部分代码$this->db->query(‘DELETE FROM ‘ . $GLOBALS[‘ecs’]->table(‘cart’) . ” WHERE session_id = ‘$this->session_id’ AND user_id =””);

此处省略部分代码}

2.lib.main.php

function update_user_info()

{ 些处省略函数原来代码,直接跳到函数最后,加上如下代码:

$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);

$sql2=”select distinct(c.goods_id) from”.$GLOBALS[‘ecs’]->table(‘cart’).”as c left join”

.$GLOBALS[‘ecs’]->table(‘goods’).”as g on c.goods_id=g.goods_id where g.is_on_sale =0 AND c.user_id = ‘”.$_SESSION[‘user_id’].”‘”;

$data = $GLOBALS[‘db’] -> getAll($sql2);

if($data){

foreach ($data as $k=>$v){

$sql=”delete from”.$GLOBALS[‘ecs’]->table(‘cart’).”where goods_id = ‘”.$v[‘goods_id’].”‘”;

$GLOBALS[‘db’] -> query($sql);

}}}

分隔线

在privilege.php中发现一个function clear_cart()用于清理cart中无效的数据的,难怪购物车的商品,session一过期就没有了!~

既然我们不需要定期清cart中的无效数据,这个function其实就没有用了,但我们改一下,可以用来清理己下架的商品,这样上面.lib.main.php文件中的清理下架商品的部分就可以删除了!~

修改后的function如下:

function clear_cart()

{

// 删除cart中无效的数据//$sql = “DELETE FROM ” . $GLOBALS[‘ecs’]->table(‘cart’) .//” WHERE session_id NOT ” . db_create_in($valid_sess);// $GLOBALS[‘db’]->query($sql);$sql2=”select distinct(c.goods_id) from”.$GLOBALS[‘ecs’]->table(‘cart’).”as c left join”.$GLOBALS[‘ecs’]->table(‘goods’).”as g on c.goods_id=g.goods_id where g.is_on_sale =0 AND c.extension_code=” “;//.$GLOBALS[‘ecs’]->table(‘goods’).”as g on c.goods_id=g.goods_id“;$data = $GLOBALS[‘db’] -> getAll($sql2);print_r($data);if($data){foreach ($data as $k=>$v){$sql=”delete from”.$GLOBALS[‘ecs’]->table(‘cart’).”where goods_id = ‘”.$v[‘goods_id’].”‘”;$GLOBALS[‘db’] -> query($sql);}}

}

标签:ecshop, foreach, PHP

如果觉得《php后台维护岗位周记 工作周记 | php外包与php技术服务商》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。