文档章节

分析ecshop赠品在购物车中出现

adbug
 adbug
发布于 2015/06/17 09:31
字数 576
阅读 4
收藏 0

ecshop是一个非常灵活的电子商务系统,他可以在优惠活动中,为某个商品增加赠送礼品.不但可以设置价格,还可以免费赠送。

    在购物的时候,如果你选择了某商品,而且该商品又设置了赠送礼品,那么在购物车的cart页面,将会通过以下程序调用赠品.看下面以下ecshop函数,另外还做了一些修改,完善了漏洞

/**
 * 取得某用户等级当前时间可以享受的优惠活动
 * @param   int     $user_rank      用户等级id,0表示非会员
 * @return  array
 */
function favourable_list($user_rank,$goods_id1)
{
    /* 购物车中已有的优惠活动及数量 */
    $used_list = cart_favourable();


    /* 当前用户可享受的优惠活动 */
    $favourable_list = array();
    $user_rank = ',' . $user_rank . ',';
    $now = gmtime();
    $sql = "SELECT * " .
            "FROM " . $GLOBALS['ecs']->table('favourable_activity') .
            " WHERE CONCAT(',', user_rank, ',') LIKE '%" . $user_rank . "%'" .
            " and act_range_ext like '%".$goods_id1."%' AND start_time <= '$now' AND end_time >= '$now'" .
            " AND act_type = '" . FAT_GOODS . "'" .
            " ORDER BY sort_order";
    $res = $GLOBALS['db']->query($sql);
    while ($favourable = $GLOBALS['db']->fetchRow($res))//SQL中的LIKE语句,获取了跟商品ID相似的记录,所以会出现“618=18”的错误问题,那么赠品类目就会有问题
    {
   //此处是把获取的赠品中的ID,中的,号分割
$act_range_ext=$favourable["act_range_ext"];
   $str1=explode(',',$act_range_ext);
//分割的ID逐一匹配商品ID
foreach($str1 as $k)
   {
//如果分割的ID值和商品的ID对应的话,执行此代码
if($k==$goods_id1)
{
$favourable['start_time'] = local_date($GLOBALS['_CFG']['time_format'], $favourable['start_time']);
$favourable['end_time']   = local_date($GLOBALS['_CFG']['time_format'], $favourable['end_time']);
$favourable['formated_min_amount'] = price_format($favourable['min_amount'], false);
$favourable['formated_max_amount'] = price_format($favourable['max_amount'], false);
$favourable['gift']       = unserialize($favourable['gift']);
foreach ($favourable['gift'] as $key => $value)
{
//判断商品上下架
$favourable['gift'][$key]['formated_price'] = price_format($value['price'], false);
//$favourable['gift'][$key]['goods_thumb'] = $GLOBALS['db']-> getOne("select goods_thumb from ".$GLOBALS['ecs']->table('goods')." where goods_id = $value[id]");
//判断赠送的商品的是否正常,如果不正常则不显示次赠品
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('goods') . " WHERE is_on_sale = 1 AND goods_id = ".$value['id'];
$is_sale = $GLOBALS['db']->getOne($sql);
if(!$is_sale)
{
//print_r($favourable['gift'][$key]);
unset($favourable['gift'][$key]);
}
}

$favourable['act_range_desc'] = act_range_desc($favourable);
$favourable['act_type_desc'] = sprintf($GLOBALS['_LANG']['fat_ext'][$favourable['act_type']], $favourable['act_type_ext']);

/* 是否能享受 */
$favourable['available'] = favourable_available($favourable);
if ($favourable['available'])
{
/* 是否尚未享受 */
$favourable['available'] = !favourable_used($favourable, $used_list);
}

$favourable_list[]= $favourable;
}
}
        
    }
//print_r($favourable_list);
    return $favourable_list;
}

    其中的gift值就是赠品的数据信息.而在模板flow.dwt中。

    !-- {foreach from=$favourable.gift item=gift} --><br />
       <input type="checkbox" value="{$gift.id}" name="gift[]" />
       <a href="/goods.php?id={$gift.id}" target="_blank">{$gift.name}</a> [{$gift.formated_price}]
      <!-- {/foreach} -->

   就是循环显示赠品的相关信息.

本文转载自:http://blog.csdn.net/fgdfgasd/article/details/14046273

共有 人打赏支持
adbug
粉丝 6
博文 176
码字总数 198249
作品 0
成都
私信 提问
ecshop 完美解决动态ip登录超时和购物车清空问题

ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-05-06 前一段时间,ECSHOP开发中心的一个客户说自己的ecshop网店出了状况,就是有时候登录的时候会自动退出。而且购物车也没规律的会清...

thinkyoung
2015/06/24
0
0
重构ECShop中的Javascript(一)

ECShop一直有一个很大的问题,就是其自带的JS脚本和jQuery为主的不少使用非常多的JS框架冲突,这个冲突导致了我们在制作ECShop模板的时候,很多优秀的界面效果无法实现。可以说是ECShop最让人...

icebird
2012/11/27
0
0
ECSHOP登录自动退出问题解决

最近进行ecshop二次开发,可以说是碰到了很多问题,最让人苦恼的是ecshop会员登录和管理员登录不了后台,或者是登录之后就自动退出。 一般这种情况在本地是好好的,为什么上传到服务器就不行...

skq
2013/06/08
0
1
ecshop 实现“精品、新品、热销”板块出现选项卡效果的方法

最近做一个网络商城,直接使用ecshop的免费模板,懒得重新做,ecshop建站多日了,一直想在主页的板块中建网页选项卡鼠标经过自动切换效果,百度搜索这方面的内容也没找到合适的,今天一实验,...

小果果x
2014/12/03
0
0
在ecshop商品列表页加一个购买数量输入框

我们在使用ecshop的时候,特别是批发站。 很多时候不能在ecshop商品列表页输入购买数量,是非常不方便的。 现在如果一次性购买好几个商品,十分的不方便,只有在ecshop的商品详细页面才能输入...

路边拾草人
2011/12/14
0
2

没有更多内容

加载失败,请刷新页面

加载更多

Nginx/Apache/PHP Hidden Version Number

nginx隐藏版本号的方法 在nginx配置文件nginx.conf中,加入以下代码: server_tokens off; apache隐藏版本号的方法 在apache配置文件httpd.conf中,加入以下代码: ServerTokens ProdServer...

Linux就该这么学
11分钟前
1
0
iOS 滚动视图 UIScrollView 代理方法 相关属性 状态栏 滚动条 回弹 弹簧效果

iOS 滚动视图 UIScrollView 代理方法 相关属性 状态栏 滚动条 回弹 弹簧效果 #import "ViewController.h"@interface ViewController () <span style="color:#ff0000;"><UIScrollViewDel......

壹峰
17分钟前
0
0
【转】Hive 工作原理详解

什么是Hive? Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。...

hnairdb
17分钟前
1
0
开源 java CMS - FreeCMS2.8 微信管理 公众号设置

项目地址:http://www.freeteam.cn/ 公众号设置 管理员可以在这里设置微信公众号的相关配置,每个站点都可设置自己的微信公众号。 其中接口URL需要配置在微信公众号中,如下图所示 App Key ...

freeteam
19分钟前
1
0
MySQL中 replace 函数应用

将以下字段中的【忻州】替换为【洛阳】 Sql语句如下 UPDATE sys_organization SET org_name = REPLACE(org_name,'忻州','洛阳'); 执行结果如下...

karma123
21分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部