找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz!x3 避免下载重复扣除积分的修改方法

原理:
      就是用个数据库保存会员下载信息,下次下载同一附件校验一下是否过期,没过期就不扣分。需要的字段,明白人都知道:aid,uid,dateline,再加个自增字段id
194013t8lpw211urd2nn7w.jpg.thumb.jpg
创建数据库脚本
  1. --
  2. -- 表的结构 `pre_forum_attachment_once`
  3. --

  4. DROP TABLE IF EXISTS `pre_forum_attachment_once`;
  5. CREATE TABLE IF NOT EXISTS `pre_forum_attachment_once` (
  6.   `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  7.   `aid` mediumint(8) unsigned NOT NULL DEFAULT '0',
  8.   `uid` mediumint(8) unsigned NOT NULL DEFAULT '0',
  9.   `dateline` int(10) unsigned NOT NULL DEFAULT '0',
  10.   PRIMARY KEY (`id`)
  11. ) TYPE=MyISAM  AUTO_INCREMENT=8 ;
复制代码
2、修改forum_misc.php文件,路径:x:/你的网站目录/source/module /forum
查找代码
  1. $getattachcredits = updatecreditbyaction('getattach', $_G['uid'], array(), '', 1, 1, $thread['fid']);
复制代码
替换为
  1. $_G['policymsg'] = $p = '';

  2. //避免重复扣积分        
  3. if(DB::fetch_first('SELECT * FROM '.DB::table('forum_attachment_once')." WHERE aid='$aid' AND uid='$_G[uid]'")) {
  4.          
  5.         $_G['policymsg'] = '积分不受影响';
  6.         
  7. } else{
  8.         $getattachcredits = updatecreditbyaction('getattach', $_G['uid'], array(), '', 1, 1, $thread['fid']);
  9.         
  10.         //forum_attachment_once插入下载记录
  11.   DB::query('insert into '.DB::table('forum_attachment_once')." (`aid`, `uid`, `dateline`) VALUES ('$aid', '$_G[uid]', '$_G[timestamp]')");
  12.         if($getattachcredits['updatecredit']) {
  13.                 if($getattachcredits['updatecredit']) for($i = 1;$i <= 8;$i++) {
  14.                         if($policy = $getattachcredits['extcredits'.$i]) {
  15.                                 $_G['policymsg'] .= $p.($_G['setting']['extcredits'][$i]['img'] ? $_G['setting']['extcredits'][$i]['img'].' ' : '').$_G['setting']['extcredits'][$i]['title'].' '.$policy.' '.$_G['setting']['extcredits'][$i]['unit'];
  16.                                 $p = ', ';
  17.                         }
  18.                 }
  19.         }
  20. }
复制代码
3、光这些还不够,没有自动清除代码,下面我们在计划任务中添加个自动处理
将下面代码保存成文件cron_clean_forum_attachment_once.php,并放到x:/你的网站目录/source/include/cron目录

  1. /**
  2. *      diy编程器论坛 liyf 编写
  3. *      [url]http://kitebee.meibu.com[/url]
  4. *      2012.4.9
  5. *      清理forum_attachment_once表下载记录,默认保留1天
  6. *      cron_clean_forum_attachment_once.php
  7. */

  8. if(!defined('IN_DISCUZ')) {
  9.         exit('Access Denied');
  10. }

  11. //设置保留有效期天数
  12. $expire_date = 1; //默认设置为1天过期

  13. //将时间转为秒
  14. $deltime = $_G['timestamp'] - $expire_date*3600*24; //扣除有效期后剩余时间,秒

  15. //删除所有小于有效期的记录
  16. DB::query('delete from '.DB::table('forum_attachment_once')." where `dateline`<'$deltime'");

  17. ?>
复制代码
195341rrrr9cd80rcyr79q.jpg.thumb.jpg
任务脚本就是上面建的那个文件
195342tadkepmt2bovpbok.jpg
好了,全部搞定,自己去下个附件,第一次正常扣分,第二次嘛就是下面的效果了

最终效果图
1940141ll1a8877j8ph7aj.jpg

本教程由无限星辰工作室CRX349独家整理和提供,转载请注明地址,谢谢。本文地址:https://www.xmspace.net/thread-70-1-1.html
无限星辰工作室  好集导航 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 星辰api  星辰支付二维码管理平台 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225

发表于 2013-7-24 10:36:01 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

该帖共收到 0 条回复!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

美图秀

    • fastadmin 后台界面使用字段数组类型
    • Discuz!x3.5 修改标题高亮颜色
    • Discuz!x3.5 应用中心 下载应用一直下载中
    • 帖子定时显示
    • 论坛辅助审核
拖动客服框
Online Service
点击这里给我发消息
点击这里联系我们
微信扫一扫
在线客服
快速回复 返回顶部 返回列表