这篇文章主要为大家详细介绍了织梦实现会员限制用户单日下载软件资源的上限方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。

使用织梦做过下载站点的朋友可能知道,织梦的下载站会员是可以如果满足条件一日内是可以无限制下载的,这个对于某些“不太地道的”用户可 能会给服务器早成非常大的压力,这个时候我们一般是希望通过二次开发实现这样一种功能,对单用户会员实现单日下载次数的限制。说得直白一点就是限制会员每天的下载次数。说干就干,下面是361源码给大家分享的实现办法,如果对您有帮助请给个赞或者给我们技术一些狗粮打赏,如果您觉得没什么实际的意义也感谢您的访问:

1、首先在数据表dede_member增加一个字段记录日期和当日下载的软件的ID组成的一个字串,例如:“201701113|1##2##3”,这个样子我用的是varchar类型长度255,默认值就是“201701113|1##2##3”

2、在后台-系统-系统基本参数-增加一个系统参数,我选择分类是站点设置,这里主要是设置下载的上限值,类型数字型,说明“单用户单日下载次数上限”,名称是“cfg_dlimit”,测试期间我设置的是3

3、在plus目录下找到download.php在如下位置增加下面一段代码(大约190行之下,会员级别判断之下)://判断下载次数是否达到当日上限

if($cfg_ml->M_Rank > $needRank && $needMoney > 0){

if(isset($GLOBALS['cfg_dlimit']) && $GLOBALS['cfg_dlimit'] > 0 ){

$dtSql = "SELECT `dtime` FROM `dede_member` WHERE `mid`='{$cfg_ml->M_ID}'";

$dt = $dsql->GetOne($dtSql);

if($dt['dtime'] == ''){

#没有对应记录,构建并记录更新用户记录

$dtStr = date('Ymd')."|".$id;

$updtsql = "UPDATE `dede_member` SET `dtime`='{$dtStr}' WHERE `mid`='{$cfg_ml->M_ID}'";

$dsql->ExecuteNoneQuery($updtsql);

}else{

#有记录,开始拆分判断并且进行计算处理

$tmp = explode('|', $dt['dtime']);

#判断记录日期是否是今天,是则返回剩余次数,不是则返回系统限制上限

$today = date('Ymd');

if($today == $tmp[0]){

$arr = explode('##',$tmp[1]);

#判断当前id是否包含在内

if(!in_array($id, $arr)){

#判断总下载次数

if(count($arr) >=  $GLOBALS['cfg_dlimit']){

#超限,不予下载

$msgtitle = "你不能下载软件:{$arctitle}!";

$moremsg = "你今日的下载上限 ".$GLOBALS['cfg_dlimit']." 次 已满!";

include_once(DEDETEMPLATE.'/plus/view_msg.htm');

exit(0);

}else{

$newArr = array_merge($arr,[$id]);

// echo $id;

// print_r($arr);

// print_r($newArr);

// //echo $a = implode(',', $newArr);

$dtNew = date('Ymd')."|".implode('##', $newArr);

#未超限,更新下载id记录

$dtInsert = "UPDATE `dede_member` SET `dtime`='{$dtNew}' WHERE `mid`='{$cfg_ml->M_ID}'";

$dsql->ExecNoneQuery($dtInsert);

}

}

}else{

//echo 7;

#不是今天,那么构建

$dtStr = date('Ymd')."|".$id;

$updtsql = "UPDATE `dede_member` SET `dtime`='{$dtStr}' WHERE `mid`='{$cfg_ml->M_ID}'";

$dsql->ExecuteNoneQuery($updtsql);

}

}

}//-----

}

逻辑是,指定下载权限以上的用户受限,小于或者等于权限的用户不受限,免费资源不受限,重复下载不计次数。

4、如果亲想在后台显示用户当日剩余的下载次数,那么修改如下两个文件,dede/member_main.php和dede/templets/member_main.htm

dede/member_main.php 文件最下面增加://

function GetDtime($dt){

if($dt == ''){

return $GLOBALS['cfg_dlimit'];

}else{

$tmp = explode('|', $dt);

#判断记录日期是否是今天,是则返回剩余次数,不是则返回系统限制上限

$today = date('Ymd');

if($today == $tmp[0]){

$arr = explode('##',$tmp[1]);

return is_array($arr) ? $GLOBALS['cfg_dlimit'] - count($arr) : $GLOBALS['cfg_dlimit'];

}else{

return $GLOBALS['cfg_dlimit'];

}

}

}

dede/templets/member_main.htm 文件修改第130行:金币:{dede:field.money /} 积分:{dede:field.scores /}

修改为:金币:{dede:field.money /} 积分:{dede:field.scores /} 剩下:{dede:field.dtime function="GetDtime(@me)" /}

后台在注册会员别变即可查看到需要的值

5、如果想在用户中心显示当前登录会员的当日下载剩余次数,那么修改 include/memberlogin.class.php,在第390行之下(重置用户信息之下),增加如下代码:/**

获取当前用户当然下载限制剩余量

*/

function GetDtime($dsql){

$mid = $this->M_ID;

$dt = $dsql->GetOne("Select `dtime` from `dede_member` where mid='$mid' ");

if($dt['dtime'] == ''){

return $GLOBALS['cfg_dlimit'];

}else{

$tmp = explode('|', $dt['dtime']);

#判断记录日期是否是今天,是则返回剩余次数,不是则返回系统限制上限

$today = date('Ymd');

if($today == $tmp[0]){

$arr = explode('##',$tmp[1]);

return is_array($arr) ? $GLOBALS['cfg_dlimit'] - count($arr) : $GLOBALS['cfg_dlimit'];

}else{

return $GLOBALS['cfg_dlimit'];

}

}

}

然后在用户中心使用 <?php echo $cfg_ml->GetDtime($dsql); ?> 即可显示剩余的次数。

到这里就完成了改造,有需求的朋友可以自己尝试一下,处理前注意备份文件和数据库,防止出错!

以上就是织梦实现会员限制用户单日下载软件资源的上限方法的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持361模板网。

感谢打赏,我们会为大家提供更多优质资源!

每日下载次数限制php,织梦实现会员限制用户单日下载软件资源的上限方法相关推荐

  1. 完美天空下载站php程序,织梦CMS高仿天空软件站|软件下载站源码整站带数据

    织梦CMS高仿天空软件站|软件下载站源码整站带数据是一款基于DEDECMS5.5开发制作的仿天空软件站的源码,适用于软件下载.资源下载等网站使用. 安装方法: 1.首先打开你的网址 然后就会出现ded ...

  2. 织梦网站调用变量失败_(自适应手机版)响应式精密机械模具类网站织梦模板 织梦仪器模具加工设备网站模板下载...

    模板名称:(自适应手机版)响应式精密机械模具类网站织梦模板 织梦仪器模具加工设备网站模板下载 本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,矿山钻机设备.矿机网 ...

  3. 织梦dedecms微信公众平台插件下载及安装方法

    织梦dedecms微信公众平台插件下载及安装方法 dedecms教程 dedecms 织梦微信公众平台插件演示图: 安装方法:放到dede程序的plus目录下即可. 接口配置信息按下面说明填写, UR ...

  4. php制作会员签到打开,【PHP】织梦dedecms会员中心模板带会员签到赚金币功能

    一:将member文件夹上传覆盖网站根目录 二:后台添加统一页头页尾调用模板(具体操作请见截图) 三:在系统-SQL命令行工具中运行一下SQL创建数据库: (此为utf-8) CREATE TABLE ...

  5. 织梦php版本图片不能上传,织梦Dedecms会员中心无法上传图片的解决方法

    织梦Dedecms会员中心,由于为了安全性问题,限制了注册会员在会员中心发布信息的时候上传图片,但是管理员登录会员中心发布信息的时候上传图片却不受影响.那该如何解决呢?下面我们来说明一下具体的解决方案 ...

  6. 织梦列表页生成的html在哪里,织梦系统给手机版生成静态页HTML的方法

    原标题:织梦系统给手机版生成静态页HTML的方法 织梦dedecms默认的手机端不能生成静态,对于使用静态的网站来说多少有些不方便,其实dedecms可以通过一种另类的方法来给手机端生成静态页面的. ...

  7. php 表单必选改为选填,织梦dedecms自定义表单选项必填修改解决方法

    本文实例讲述了织梦dedecms自定义表单选项必填修改解决方法.分享给大家供大家参考.具体方法如下: 方法一:首先我们要用一段php代码来判断验证必选项. 1.我们先在plus/diy.php 文件中 ...

  8. 织梦DedeCMS在自定义表单里加入验证码的方法

    在很多建站需求中,需要一些额外的表单供前台用户提交.以便于收集.统计.分析及处理更多的数据.比如:在线订单.在线报名等一些常见的互动应用. 利用织梦内容管理系统(DedeCMS)自带提供的自定义表单功 ...

  9. 织梦dedecms 静态网页生成速度很慢的解决方法

    织梦dedecms 静态网页生成速度很慢的解决方法,从dedecms官网论坛找到个合适的代码: 打开 include/inc/inc_fun_SpGetArcList.php 找到: for($i=0 ...

最新文章

  1. Java遍历Map对象的四种方式
  2. 开通会员配送费反而更高了?美团外卖发致歉声明!
  3. LB 负载均衡的层次结构
  4. dart系列之:在dart中使用数字和字符串
  5. VS2013正在等待所需操作完成
  6. 十年生死轮回,看国产手机发展四个阶段
  7. HDFS的java API操作(基于Windows平台的Eclipse)
  8. 数据结构之搜索算法二:二叉搜索树
  9. @transactional 可以定义到controller_仿照源码,手写一个自定义 Spring MVC 框架
  10. 使用Java根据约定格式生成Oracle建表语句
  11. TestStand2014 使用过程中message Popup遗失test and buttons
  12. 关于解决国内手机号不能用于gmail邮箱注册问题
  13. SLAM学习——BA(Bundle Adjustment)与图优化
  14. Android灯光系统框架分析
  15. 用c语言怎么打e的x次方
  16. oh-my-zsh提示符显示当前用户名和主机名
  17. 米拓5.3 mysql支持off,Metinfo 5.3.17 前台SQL注入漏洞分析
  18. ES6,ES7,ES8,ES9,ES10新特性一览
  19. Java中克隆的用法,深拷贝、浅拷贝概念的引出
  20. 安装VUE过程中出现的4048错误

热门文章

  1. 【react踩坑】前端显示文件流图片
  2. CNUOJ 2020 LJX的高精度
  3. K-means算法的Java实现 聚类分析681个三国武将(1)
  4. 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知
  5. 学校运动会广播稿计算机,学校运动会广播稿十篇
  6. 第一次带美瞳,突然发现眼睛大了10倍!
  7. 加强化工企业危化品管理的几点建议
  8. 极光推送第一次进入APP无法获取RegistrationID
  9. 纯前端下载excel数据(导出)
  10. java娘_如何调教Java娘来优化MC!