无法正确使用php代码加载存储在主目录中的视频mp4文件。
嗨,我正在建立一个可湿性粉剂的网站,销售指令视频mp4文件。为了保护这些文件,我将它们放在一个名为videos的目录中,该目录位于主目录(public_html目录之外),以保护这些文件不被免费下载。我正在尝试编写php代码来加载视频。但是,我无法访问/home/username/videos中的视频。
我的代码:
添加动作(“模板重定向”、“视频重定向”,5);
函数视频_重定向(){
if (is_admin())
return;
if (!is_page(videoplayerpageonmysite))
return;
$filename=“/home/username/videos/videofile.mp4”;
"您的浏览器不支持视频标签。";
每次我运行代码,我得到一个没有支持格式的视频...错误。
我只能让它在public_html文件夹中加载视频文件(它可以很好地工作),但当它位于/home/username/videos/Please help中时却无法加载!
您不能给浏览器一个服务器硬盘上的文件路径,并期望它能够加载它。它将把它解析为一个相对URL,向HTTP服务器请求它,然后得到一个404。
您需要为浏览器提供一个实际加载文件的URL。
如果您想限制谁可以访问它(例如,付费的人),那么您可以编写一个PHP程序,检查请求是否来自付费的人(即身份验证授权),然后读取文件并在HTTP响应中输出。
您必须使用PHP脚本作为视频标记中的源URL,并指定它应该加载哪个视频的标识符,例如src=“loadvideo.PHP?id=1”
或其他内容。(这是因为源必须是在Web服务器上实际可访问的有效URL-不会忘记在用户机器(而不是服务器)上运行的浏览器无法导航到磁盘上的路径。如果可以,则将文件移到公共\u html文件夹外将不会提供任何安全性!)
然后,当视频标签加载到页面中时,它将向该URL发出请求,从而导致PHP脚本运行。脚本必须将提供的ID与磁盘上的正确文件相关联,获取该文件的内容,并将其作为响应以及适当的头(例如mime类型等)进行回显。你可能已经在网上找到了这种模式的例子。
当然,PHP脚本还需要对请求进行身份验证,以确保请求者是已登录的付费用户,否则您仍然无法保护任何内容。如果没有最后一步,任何人都可以访问PHP脚本的URL并提供ID,直到得到结果,然后下载视频,就像将它们放在public_html文件夹中一样。但是,只要您正确地实现了安全性,只有已经付费的用户才能下载视频。