开发者社区> 问答> 正文

php通过session实现url只能访问一次的问题

问题描述 打算用某个php程序返回m3u8文本,php的url形式为https://xxx.com/test.php?toke... 直接通过浏览器访问,第一次打开正常,第二次打开就显示空白,这是我期望的结果。 但是实际应用的时候,这个php的url是放在js中,由video.js通过ajax访问获取的,那么问题出现了,在引用video.js的网页通过F12查到这个php的url,此时右键选择在浏览器新标签中打开,仍然能看到m3u8文本内容。

问题出现的环境背景及自己尝试过哪些方法 打算用某个php程序返回m3u8文本,url只允许访问一次; 查了原页面和新标签的phpsessionid是一致的。 看到一个类似的问题:https://developer.aliyun.com/...

相关代码 // PHP代码

<?php
session_start();
if (isset($_SESSION['USERTAG']) && $_SESSION['USERTAG'] == $_GET['token']) {
    exit();
} else {
    $_SESSION['USERTAG'] = $_GET['token'];
    $m3u8='m3u8文本内容';
    echo $m3u8;
}
?>

你期待的结果是什么? 期望通过F12找到的php url,无法访问; 按照现在的情况,仍然能访问一次,那么用户可以用一些m3u8下载工具获取m3u8的内容。

PS:其他防下载/防盗链的措施当然也会做,考虑这个问题的解决方案的时候,假定没有做其他任何防盗链错误,只通过url地址只允许访问一次来稍微限制下用户直接复制粘贴url到下载工具中下载(当然他们可以在F12里直接复制m3u8文本内容,然后保存文件。。。,起码增加下操作复杂度)。 请指教!谢谢!

展开
收起
问问小秘 2020-01-09 17:22:07 1002 0
1 条回答
写回答
取消 提交回答
  • 先把 isset($_SESSION['USERTAG']) 和 $_SESSION['USERTAG'] 都打出来,看看通过 ajax 访问和通过浏览器访问,这两个输出的有啥不一样. 如果都一样那就把整个 if 条件涉及的变量都打出来,能走 else 分支那说明 if 里条件是 false,那就要找是哪个变量导致了. 一般是是sessionid的问题,原来我在浏览器母页面地址栏看到的sessionid和ajax访问时的sessionid不一样,通过自定义sessionid解决。

    2020-01-09 17:28:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载