业务经理

微信扫描以上二维码

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
    感谢大家给我解决此问题,我已经完美的解决

迅睿系统漏洞

外贸多语言建站
外贸多语言建站(2026-10-30)
修正对百度编辑器提取支持
AI文章生成器
AI文章生成器(2026-10-29)
任务插图设置数量
Bing站长数据
Bing站长数据(2026-10-29)
根据BING接口调整菜单 各个页面数据支持点击查看详情
按字段付费
按字段付费(2026-10-29)
按字段付费用于模块的字段设置一定的价格,当用户购买了此内容的字段时才...
泛解析站群系统
泛解析站群系统(2026-10-29)
AI队列增加清空按钮 表单提示语收敛 目录模式不接管主域名模板
账号注销
账号注销(2026-10-29)
用于用户中心的注销账号申请,后台审核通过后注销此账号。后台统一管理注...
邮件群发
邮件群发(2026-10-28)
修改模板的命名
自定义收款/捐款
自定义收款/捐款(2026-10-28)
自定义收款或捐款插件可以让用户快速创建付款或者捐款功能
CMS内容批量修改
CMS内容批量修改(2026-10-28)
后台批量修改文章内容的指定字段在插件后台可以任意指定字段
全站模块搜索
全站模块搜索(2026-10-28)
实现全模块一次性搜索内容,一键搜索全站内容精准搜索全部模块: