【求助】关于一个header("Location:".$videourl);的重定向问题

hgwyl 2020-10-10 01:54:19
场景:default.php页面,播放MP3文件,隐藏播放地址。

<?php
//数据库中id为111的记录,对应mp3文件的地址是222.mp3

//局部token,用于失效
$_SESSION['mp3token'] = md5("hello");
//mp3文件的地址
$videourl="http://www.12345.com/222.mp3";

function goVideo()
{
$vid = (int)$_GET['videoId']; //数据库存放的资源id
$data = $this->getInfo($vid); //通过vid获取数据库存放的真实资源地址
if(isset($_SESSION["mp3token"])){
unset($_SESSION["mp3token"]); //删除token,保证每次只能播放一次
header("Location:".$videourl); //重定向 保证video src引入后,拿到真实地址进行播放
}
}
?>
<video controls="controls" autoplay="autoplay">
<source type="audio/mpeg" src="http://www.12345.com/goVideo?videoId=111" />
Your browser does not support the video tag.
</video>


访问http://www.12345.com/default.php?videoId=111
能显示页面,但是没有获取mp3的地址
请问哪里出错了?

...全文
448 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
廖展程 2020-10-13
  • 打赏
  • 举报
回复
可以的,你指定头部header函数告诉浏览器你的是音频,随后你就读取文件,把文件输出
下雨的声音丶 2020-10-11
  • 打赏
  • 举报
回复
引用 4 楼 hgwyl 的回复:
[quote=引用 3 楼 下雨的声音丶 的回复:]你这个跳转之后人家在控制台还是能看到你的地址的。 你可以把文件读取出来直接输出,或者分段输出(目前基本的音乐平台都是这样) 其次你这个代码有问题啊,兄弟。goVideo() 这个方法没有调用啊?而且你这个PHP 跟html 写在一起 需要判断啊,
PHP是不太懂,baidu搜索,然后自己改巴改巴的。 把文件读取出来直接输出——意思是我在后台输出二进制流,在页面中转成文件? 这样不会弄传输很慢吗? 有没有代码类的办法?[/quote] echo file_get_contents('./222.mp3');
hgwyl 2020-10-11
  • 打赏
  • 举报
回复
引用 7 楼 下雨的声音丶 的回复:
index.html

<!DOCTYPE html>
<html>
<head>
    <title>mp3</title>
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">
</head>

<body>
<video controls="controls" autoplay="autoplay">
    <source type="audio/mpeg" src="http://test.localhost.com/test.php?videoId=111" />
    Your browser does not support the video tag.
</video>
</body>

</html>
test.php

//    $vid = (int)$_GET['videoId']; //数据库存放的资源id
//    $data = $this->getInfo($vid); //通过vid获取数据库存放的真实资源地址
//数据库中id为111的记录,对应mp3文件的地址是222.mp3

echo file_get_contents('./222.mp3');
感谢,测试了一下,可以用了。 index.html+test.php 和 index.php+test.php 两种组合都可以用这个方式 感谢
下雨的声音丶 2020-10-11
  • 打赏
  • 举报
回复
index.html

<!DOCTYPE html>
<html>
<head>
    <title>mp3</title>
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">
</head>

<body>
<video controls="controls" autoplay="autoplay">
    <source type="audio/mpeg" src="http://test.localhost.com/test.php?videoId=111" />
    Your browser does not support the video tag.
</video>
</body>

</html>
test.php

//    $vid = (int)$_GET['videoId']; //数据库存放的资源id
//    $data = $this->getInfo($vid); //通过vid获取数据库存放的真实资源地址
//数据库中id为111的记录,对应mp3文件的地址是222.mp3

echo file_get_contents('./222.mp3');
hgwyl 2020-10-11
  • 打赏
  • 举报
回复
引用 5 楼 下雨的声音丶 的回复:
[quote=引用 4 楼 hgwyl 的回复:][quote=引用 3 楼 下雨的声音丶 的回复:]你这个跳转之后人家在控制台还是能看到你的地址的。 你可以把文件读取出来直接输出,或者分段输出(目前基本的音乐平台都是这样) 其次你这个代码有问题啊,兄弟。goVideo() 这个方法没有调用啊?而且你这个PHP 跟html 写在一起 需要判断啊,
PHP是不太懂,baidu搜索,然后自己改巴改巴的。 把文件读取出来直接输出——意思是我在后台输出二进制流,在页面中转成文件? 这样不会弄传输很慢吗? 有没有代码类的办法?[/quote] echo file_get_contents('./222.mp3');[/quote] 是了一下这个办法,发现貌似没啥用…… 能辛苦给详细一点的代码吗?
hgwyl 2020-10-10
  • 打赏
  • 举报
回复
引用 3 楼 下雨的声音丶 的回复:
你这个跳转之后人家在控制台还是能看到你的地址的。 你可以把文件读取出来直接输出,或者分段输出(目前基本的音乐平台都是这样) 其次你这个代码有问题啊,兄弟。goVideo() 这个方法没有调用啊?而且你这个PHP 跟html 写在一起 需要判断啊,
PHP是不太懂,baidu搜索,然后自己改巴改巴的。 把文件读取出来直接输出——意思是我在后台输出二进制流,在页面中转成文件? 这样不会弄传输很慢吗? 有没有代码类的办法?
下雨的声音丶 2020-10-10
  • 打赏
  • 举报
回复
你这个跳转之后人家在控制台还是能看到你的地址的。 你可以把文件读取出来直接输出,或者分段输出(目前基本的音乐平台都是这样) 其次你这个代码有问题啊,兄弟。goVideo() 这个方法没有调用啊?而且你这个PHP 跟html 写在一起 需要判断啊,
hgwyl 2020-10-10
  • 打赏
  • 举报
回复
引用 1 楼 qq_39047451 的回复:
mp3地址设置成全局变量
<?php
//数据库中id为111的记录,对应mp3文件的地址是222.mp3

//局部token,用于失效
$_SESSION['mp3token'] = md5("hello");
//mp3文件的地址
global $videourl;
$videourl="http://www.12345.com/222.mp3";

function goVideo()
{
	$vid = (int)$_GET['videoId']; //数据库存放的资源id
	$data = $this->getInfo($vid); //通过vid获取数据库存放的真实资源地址
	if(isset($_SESSION["mp3token"])){
		unset($_SESSION["mp3token"]); //删除token,保证每次只能播放一次
		header("Location:".$videourl);   //重定向 保证video src引入后,拿到真实地址进行播放
	}
}
?>
<video controls="controls" autoplay="autoplay">
<source type="audio/mpeg" src="http://www.12345.com/goVideo?videoId=111" />
Your browser does not support the video tag.
</video>
增加定义了 global $videourl; 还是没用……
qq_39047451 2020-10-10
  • 打赏
  • 举报
回复
mp3地址设置成全局变量

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧