·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分✅卡密📒收藏夹👽聊天室
返回列表 发布新帖

帝国CMS DJ音乐网站解密

85 9
发表于 前天 09:06 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
帝国CMS DJ音乐网站解密。爱站网查询下这些DJ网站权重还是不错的。貌似看到帝国做的音乐网站很少很少的啊!其实这样的DJ网站对帝国是没有任何难度的。单模型就可以做到的,不需要双模型关联的。其实细心的都会发现就舞曲连播与加入播放器播放才是稍微难点问题,其他跟那文章与下载模型差不多的。至于像程式CMS那样无刷新只需要改为AJAX请求API接口即可!
比如我们要勾选连播那就写个JS得了。
  1. //勾选连续播放开始function getdjbyId(elementId) {    if (document.getElementById) {        return document.getElementById(elementId);    } else if (document.all) {        return document.all[elementId];    } else if (document.layers) {        return document.layers[elementId];    } else {        return null;    }}function get_tags(parentObj, tag) {    if (typeof parentObj.getElementsByTagName != 'undefined') {        return parentObj.getElementsByTagName(tag);    } else if (parentObj.all && parentObj.all.tags) {        return parentObj.all.tags(tag);    } else {        return new Array();    }}function clk(_act, _id) {      var v = [];      var a = get_tags(getdjbyId(_id), 'input');      var totalItems = a.length;      if (_act == 'all') {          for (var i = 0; i < a.length; i++) {              a[i].checked = true;          }      } else if (_act == 'un') {          for (var i = 0; i < a.length; i++) {              a[i].checked = !a[i].checked;          }      } else if (_act == 'random') {            var count = Math.min(Math.floor(totalItems / 3), totalItems);          if (count > 0) {              var selected = new Set();              while (selected.size < count) {                  var index = Math.floor(Math.random() * totalItems);                  selected.add(index);              }              for (var i = 0; i < totalItems; i++) {                  a[i].checked = selected.has(i);              }          }      } else {          for (var i = 0; i < a.length; i++) {              if (a[i].value && a[i].checked) {                  v.push(a[i].value);              }          }      }        if (_act == 'play') {          if (v.length < 3) {          layer.msg('至少选择三首歌曲以上吧!', {icon: 5, offset: '300px'});          return;          }          localStorage.setItem('selecteddjIDs', v.join('_'));// 保存 mid 到 localStorage        window.open('/e/MusicSys/play/indexdj.html', 'lplay');    }  }
复制代码
小编把勾选的id保存到localStorage,目测大部分网站还是保存到cookie的。(一个 cookie 中的数据不能超过 4KB,而localStorage至少保存5m)
那接下来怎么搞呢?那继续构造一个AJAX发起请求请求后端。
  1. var mid= localStorage.getItem('selectedmusicIDs');const ap = new APlayer({container: document.getElementById('aplayer'),mutex: true,autoplay:true,theme: '#078106',preload:'auto',});$.ajax({url: '/ecmsapi/index.php?mod=duomeiti&act=music',type:"POST",dataType: "json",data:{'mid':mid},success: function (result) {ap.list.add(result.data);}});
复制代码
这样就把AJAX请求成功的勾选的播放列表添加到APlayer音乐播放器了哦
我要说一句 收起回复
创宇盾启航版免费网站防御网站加速服务

评论9

婷姐Lv.8 发表于 前天 09:07 | 查看全部
厉害,值得学习
我要说一句 收起回复
CrystαlLv.8 发表于 前天 09:08 | 查看全部
版权允许嘛
我要说一句 收起回复
CrystαlLv.8 发表于 前天 09:08 | 查看全部
那后端接口怎么写呢?细心的老坛们都知道AJAX请求的参数是mid,那后端接收就是$_POST['mid'],这里也是重点记得用帝国过滤下变量,也就是RepPostVar($_POST['mid']),既然都得到所有勾选ID的集合了,那我们就按照SQL in查询ID方便快捷,按照小编的写法如下
  1. $path1=RepPostVar($_POST['mid']);$path= str_replace("_",",","$path1");select * from {$dbtbpre}ecms_表名 where id in ($path) order by id desc
复制代码
那要想在加个时间与密钥的防盗链呢?其实也会简单的 。比如我的音乐地址字段是musicurl,上面SQL查询后遍历出他们的结果的时候就加个帝国自带的防盗链函数即可,代码如下
  1. $musicurl=ReturnDSofturl($r['musicurl'],$r['userfen'],'../../',0);
复制代码
这也是重点,ReturnDSofturl这个帝国的防盗链函数细心的都会发现是是引用另外一个防盗链文件的而默认的DoEnDownpath是没有写的,需要我们自己加个时间密钥的防盗链。此方法防盗链比判断来路更可靠更有效
  1. function DoEnDownpath($url){$secret = 'yuxunyuqi520';  //密钥$expire = time()+300*120;//time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期 $md5 =base64_encode(md5($secret . $expire, true));//用文件路径、密钥、过期时间生成加密串 $md5 =strtr($md5, '+/', '-_'); $md5 =str_replace('=', '', $md5);         $uri =$url.'?st='.$md5.'&e='.$expire;        return $uri;}
复制代码
我要说一句 收起回复
IT618发布Lv.8 发表于 前天 09:08 | 查看全部
至于怎么采集那就更简单了,虽然DJ音乐模型增加了下载的多值字段,其他的就是跟采集文章没有任何区别了。火车头发布模块里面新增表单名downpathf,防止与帝国默认的下载字段冲突。那火车头发布接口就新增代码入库多值字段
  1. $vid_name = explode('|||',$_POST['downpathf']); //发布模块里面表单名是downpathfforeach ($vid_name as $shuzu=>$str){    $v = explode("@@@",$str);     $_POST['downname'][] = $v[0];     $_POST['downpath'][] = $v[1];     $_POST['downuser'][] = $v[2];     $_POST['fen'][] = '0'; }
复制代码
我要说一句 收起回复
CrystαlLv.8 发表于 前天 09:08 | 查看全部
可以的,搞搞明年年底再卖他个几个w
我要说一句 收起回复
IT618发布Lv.8 发表于 前天 09:09 | 查看全部
厉害了。。。。。
我要说一句 收起回复
拾光Lv.8 发表于 前天 09:10 | 查看全部
代码牛逼
我要说一句 收起回复
IT618发布Lv.8 发表于 前天 09:10 | 查看全部
这几天发了不少东西。
我要说一句 收起回复
IT618发布Lv.8 发表于 前天 09:11 | 查看全部
很不错的分享
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.12.165.68,GMT+8, 2025-1-7 06:56 , Processed in 0.309575 second(s), 125 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表