业务经理

微信扫描以上二维码

028-61286886

技术咨询

阅读收费的后台处理

开源系统 更新 2017-07-19 10:24:40 苏先生

自定义字段的阅读收费,系统默认是购买一次之后记录购买状态,下次访问不再收费。

我这里想改成每次访问都需要收费,找出了购买的处理代码在diy/branch/fdb/D_module中,数据表是‘当前模块’_buy,我增加了一个字段叫readtime,然后实现了购买之后字段+1,阅读之后字段-1;

问题1:但是开始的if判断不知道该怎么写,或者说是不知道如何获得数据表里面的readtime字段

问题2:readtime字段更改的时候,数据表所有的记录都变更了,如何指定当前的uid与当前文章update  readtime这个字段?


        if (!$data['is_buy']                                                //积分购买的时候,判断如果没有购买记录则判断登录、检查积分
            && $this->input->get('action') == 'confirm') {
            // 会员未登录
            !$this->member && $this->msg(fc_lang('会话超时,请重新登录'));
            // 积分检查
            -$data['score'] + $this->member['score'] < 0 && $this->msg(fc_lang(SITE_SCORE.'不足!本次需要%s'.SITE_SCORE.',当前余额%s'.SITE_SCORE, $data['score'], $this->member['score']));
            // 扣减积分
            $this->member_model->update_score(1, $this->uid, -$data['score'], '', '购买《'.($data['name'] ? $data['name'] : $data['title']).'》');
            // 记录购买历史
            $insert = array(                        //生成数据数组
                'uid' => $this->uid,
                'url' => $data['url'],
                'score' => $data['score'],
                'readtime' => $data['readtime']+1,
                'thumb' => $data['preview'] ? $data['preview'] : ($data['thumb'] ? $data['thumb'] : ''),
                'inputtime' => SYS_TIME
            );
            if ($id) {
                $insert['cid'] = $id;
                $insert['title'] = $data['title'];
            } else {
                $insert['eid'] = $eid;
                $insert['cid'] = $data['cid'];
                $insert['title'] = ($data['ctitle'] ? $data['ctitle'].' - ' : '').$data['name'];
            }
            $this->db->insert($table, $insert);                                //这里记录购买情况,需要增加一个次数字段
            $this->msg(fc_lang('购买成功'), $data['url'], 1);
        } else {    
            /////////////////////////////////阅读之后减去可用次数////////////////////////////////
            $update = array(
                'uid' => $this->uid,
                'url' => $data['url'],
                'score' => $data['score'],
                'readtime' => 0,
                'thumb' => $data['preview'] ? $data['preview'] : ($data['thumb'] ? $data['thumb'] : ''),
                'inputtime' => SYS_TIME
            );
            if ($id) {
                $update['cid'] = $id;
                $update['title'] = $data['title'];
            } else {
                $update['eid'] = $eid;
                $update['cid'] = $data['cid'];
                $update['title'] = ($data['ctitle'] ? $data['ctitle'].' - ' : '').$data['name'];
            }
            $this->db->update($table, $update);                                //这里记录购买情况,需要增加一个次数字段
            ///////////////////////////////////////减去可读次数/////////////////////////////////////
            $this->template->assign($data);
            ob_start();
            $this->template->display($tpl);
            $html = ob_get_contents();
            ob_clean();
            echo $this->input->get('callback', TRUE).'('.json_encode(array('html' => $html)).')';exit;
        }
    }



方案

  • 陈涛 #1 · 2017-07-18 15:38:57
    每次访问都需要收费,当我付费成功之后,万一不小心关闭了页面,再打开的时候又要交钱,岂不是很坑。。。。
  • 苏先生 #2 · 2017-07-18 16:36:57
    存在即为合理,你觉得坑只是你没想到什么情况下用得到。我现在有现实需求,需要的是解决方案,不是无关紧要的评价。
    【陈涛】1楼
  • 赵绫 #3 · 2017-07-18 17:03:13
    满意答案
    在// 判断是否开启阅读收费这句话的上面加上下面的代码:
    $buy_name = 'buy_time'.$name;
    $buy_time = $this->get_cache_data($buy_name);
    if (!$buy_time) {
        $buy_time = SYS_TIME;
    }
    $buy_etime = 60; // 表示刷新周期,单位秒,60秒内有效,过期需要再次购买
    if (SYS_TIME - $buy_time > $buy_etime) {
        $buy_time = SYS_TIME;
    }
    $where.= ' and inputtime='.$buy_time;
    // 判断是否开启阅读收费
    if ($data[$fees]) { .... 这里是官方原版



    购买成功之加上

    $this->set_cache_data($buy_name, $buy_time, $buy_etime); // 新加上这句
    $this->msg(fc_lang('购买成功'), $data['url'], 1);.... 这里是官方原版
  • 苏先生 #4 · 2017-07-19 10:24:40
    感谢大家给我解决此问题,我已经完美的解决

迅睿系统漏洞

GEO系统
GEO系统(2026-09-15)
运营客户端,防止误触阴影处关闭对话框
独立站群系统
独立站群系统(2026-09-14)
子站独立部署时修复同步附件失败问题
在线客服
在线客服(2026-09-13)
修复删除会话报错问题 删除会话时联动删除聊天图片
在线考试竞赛系统
在线考试竞赛系统(2026-09-12)
增加投票功能 考试功能拓展 注意:更新后需要执行系统更新,更新数...
网上信箱
网上信箱(2026-09-12)
修复新版本兼容问题
GeoSeo收录宝
GeoSeo收录宝(2026-09-12)
1 优化Update.php文件,解决版本在线升级不完整问题 2 ...
GeoSeo工具箱
GeoSeo工具箱(2026-09-11)
修正历史记录推送
微信系统
微信系统(2026-09-11)
增加数据统计总览界面 账号管理增加服务和公众号的区别 菜单管理支持更...
答题系统
答题系统(2026-09-11)
一站式在线答题系统,支持真题考试、题库练习和错题本,适合培训、考证、...
阿里云滑动验证码
阿里云滑动验证码(2026-09-10)
采用阿里云验证码替换迅睿系统自带的图片验证码和滑动验证码。后台设置方...