PHP下载系统如何防止下载工具多线程下载重复扣点? 一个收费下载系统,采用PHP控制用户下载文件,计数。收费是基于下载次数的。现在的问题是无法控制客户端使用何种方式下载,很多下载工具默认都有监视下载的功能,如果用户使用多线程工具下载(如迅雷),会造成下载计数不准确。请问大家有无这方面的解决办法?以前见过某些下载站点的下载可以绕过下载工具的监视,直接弹出IE下载对话框,不知这是如何实现的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在服务器端apache or ng 有模块可以加载. 首先要防盗链,其次用session控制,用下载工具的话session会不同的具体没做过,原理大概是这样 自己搜索一下 一个so.可以限制单线程 单IP之类的.至于盗链 根据链接随机生成加密路径 文件名之类的可以考虑. 根据IP+时间就能够很好的实现控制,例如说一天中每个ip下载只扣一次点 如果服务器是NGINX,它有限制线程下载的功能 我说说思路1,你可以首先获取来访者浏览器信息,如果非ie,ff等主流浏览器,你就给他die掉2,判断来访者的身份是否合法(例如是否已经登入成功)3,下载的时候给资源数据库的每一个资源都加入一列,用来记录用户id和时间,数据库格式如下===================================================资源id ...... 下载用户id 下载时间(day)1 ...... |11|12|24| |2|3|2|4,判断用户今天是否已经下载过的方法:假如我的id是12 select 下载用户id,下载时间(day) from 资源表 where 下载用户id like '%|12|%'if(没取到){ 允许用户下载,并且把用户的id和今天的day值分别写入}else{ 所有的用户id数组=explode(Rs['下载用户id'],'|'); for($i=0;$i<count(所有的用户id数组);$i++){ if(所有的用户id数组[$i]==12){ 所有时间的数组=explode(Rs['下载时间(day)'],'|'); if(所有时间的数组[$i]==今天){ 不允许下载 }else{允许下载,并改写 下载时间(day) 的值为今天;} } }} php代码里面怎么调用html里面的一部分代码? 为什么ASP+ACCESS+IIS转为PHP+MySQL+APACHE变慢了很多 类中的方法为什么可以这样传递?在PHP手册中哪里有说明? 在线求解,正则问题哦 问一个学习php前的一个基本问题 求一正则表达式,在线等 急!高手快救! 如何使用phpedit编程和php? Apache配置上的一个小问题。 请指点几个小问题。 求一个正则表达式! 为什么在本机上smarty可用,到了liunx系统下smarty里的display就不能用 了
至于盗链 根据链接随机生成加密路径 文件名之类的可以考虑.
1,你可以首先获取来访者浏览器信息,如果非ie,ff等主流浏览器,你就给他die掉
2,判断来访者的身份是否合法(例如是否已经登入成功)
3,下载的时候给资源数据库的每一个资源都加入一列,用来记录用户id和时间,数据库格式如下
===================================================
资源id ...... 下载用户id 下载时间(day)
1 ...... |11|12|24| |2|3|2|4,判断用户今天是否已经下载过的方法:假如我的id是12
select 下载用户id,下载时间(day) from 资源表 where 下载用户id like '%|12|%'
if(没取到){
允许用户下载,并且把用户的id和今天的day值分别写入
}else{
所有的用户id数组=explode(Rs['下载用户id'],'|');
for($i=0;$i<count(所有的用户id数组);$i++){
if(所有的用户id数组[$i]==12){
所有时间的数组=explode(Rs['下载时间(day)'],'|');
if(所有时间的数组[$i]==今天){
不允许下载
}else{允许下载,并改写 下载时间(day) 的值为今天;}
}
}
}