• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

【PHP】防止视频资源被下载的解决办法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

假设域名:www.test.com

详情控制器

// 详情页
public function detail(){
    $_SESSION['play_token'] = md5("laofan666"); //做一个token 用于失效方案
    return View::fetch('video/detail');
}

详情页

<video controls="controls" autoplay="autoplay">
<source type="video/ogg" src="http://www.test.com/video/paly?id=1" />
 Your browser does not support the video tag.
</video>

获取播放资源

    //处理播放资源
    public function paly(){
        $request_data = Request::param();
        //数据库存放的资源id
        $vid = (int)$request_data['id'];   
        //通过vid 获取 数据库存放的真实资源地址
        $data_mes = Db::name('video')->field('video_url')->where('id',$vid)->find(); 
        if($_SESSION["play_token"]){  
            //删除token,保证每次只能播放一次
            //此处能做的东西就很多了,可以参考下方建议
            unset($_SESSION["play_token"]); 
        }
        //页面直接输出视频
        $filePath=$data_mes['video_url'];
        ini_set('memory_limit', '512M');
        header("Pragma: public");
        header("Expires: 0");
        header("Content-Type: application/octet-stream"); //文件mime类型
        ob_clean();
        flush();
        @readfile($filePath);
    }


页面链接只需要访问 详情控制器,就可以看到效果

www.test.com/video/detail/1.html

关于token设计

  • 用户登陆观看, 用户id + 视频id + 失效时间,存放一条记录,校验token

  • 无需登陆观看,ip地址&浏览器等信息 + 视频id + 失效时间, 存放一条记录 校验token

后话:代码预防下载只能暂时性的处理,要是用户录屏呢,一帧一帧的截取呢,手动滑稽.jpg


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
phpecshop前台修改发布时间:2022-07-10
下一篇:
PHP分页发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap