Php 保留一些私人文件
我试图创建一个只有在用户登录时才能访问的私有文件目录。为此,我使用了web目录外的一个文件夹,然后使用php访问它(如果允许) 下面是一个例子:Php 保留一些私人文件,php,private,html5-video,Php,Private,Html5 Video,我试图创建一个只有在用户登录时才能访问的私有文件目录。为此,我使用了web目录外的一个文件夹,然后使用php访问它(如果允许) 下面是一个例子: function display_movie($file){ printf("`<video id='movie' width='960' height='416' controls='controls' onerror='fix()'>`<br/> `<source src='movie.php?file=%s' ty
function display_movie($file){
printf("`<video id='movie' width='960' height='416' controls='controls' onerror='fix()'>`<br/>
`<source src='movie.php?file=%s' type='video/ogg; codecs=\"theora, vorbis\"'>
</video>", rawurlencode($file)`);
}
your's movie.php中的
是什么意思
您是否尝试查看movie.php是否与文件内容相呼应?(在您的页面上查看源代码,然后复制电影源代码src“movie.php?file=…”,并将其粘贴到您的浏览器中,查看是否是电影)
所有因此您需要在if语句中移动标题和回显,如果该文件不存在,您可以回显不同的标准电影:
if(file_exists($fileDir . md5($file) . $ext)) {
$contents = file_get_contents($fileDir . md5($file) . $ext);
} else {
$contents = file_get_contents($fileDir . md5(MOVIE_NOT_FOUND));
}
header('Content-type: video/ogg');
echo $contents;
如果MOVIE\u NOT\u FOUND是一个常量,那么如果找不到请求的MOVIE,您将不显示什么
您可以做的另一件事是在Your's source src中输入电影php的完整uri(如“http://localhost/some/uri/movie.php?file=..."
在movie.php中,从何处获得$fileDir、$file和$ext
编辑:应该处理您遇到的文件获取内容问题
$file = $fileDir . md5($file) . $ext;
header('Content-type: video/ogg');
//set aditional headers you may whant here
ob_clean();
flush();
if( file_exists($file) )
{
readfile($file);
} else {
readfile($fileDir . md5(MOVIE_NOT_FOUND));
}
exit;
请显示movie.php的内容。这些html标记不应该在php代码中。它们不应该在php代码中。我试图正确显示帖子,但失败了。我删除了它们。我的第一个建议是:创建一个文本文件,其中包含可识别的内容,并将其放在电影所在的目录中。调整
movie.php
文件设置为不设置内容类型
,直接回显,然后直接通过浏览器访问movies.php文件。这应该可以证明您在访问、读取和转发该文件夹中的内容时是否遇到问题。如果您看到文本,则与视频文件的处理有关以这种方式。但它至少应该澄清一点情况。它获取内容,但查看器中断:滚动不工作,诸如此类。$fileDir是文件的路径,$file=从auth.php传递,$ext='.ogv'此外,如果我不是从单独的目录获取文件,而是从同一目录获取文件,则播放器工作好的。但是,ogg并没有隐藏。那么问题就出在前端(客户端,html/css/js/什么的),如果服务器传递了电影,就不在服务器上。一个非常小的建议是编译$fileDir.md5($file)。$ext
一次,并将其存储为字符串变量,然后用于文件\u exists()
和file\u get\u contents()
函数将使此解决方案更整洁。甚至可以移动标题()
调用顶部,然后,与其使用$content
变量来保存结果,不如直接回显结果。@Lucanos:你说得对,但是从他的问题你可以看出他并没有真正的经验,所以通过不太多地更改代码,他更容易理解发生了什么,你说得对吗kes sense在很大程度上是有意义的,例如,我会以完全不同的方式来做,这样我就可以通过多种类型的视频和更严格的测试,使舒尔的每一步都按计划进行。问题是通过文件访问电影。\u get_contents()无法正确捕获整个视频文件。
$file = $fileDir . md5($file) . $ext;
header('Content-type: video/ogg');
//set aditional headers you may whant here
ob_clean();
flush();
if( file_exists($file) )
{
readfile($file);
} else {
readfile($fileDir . md5(MOVIE_NOT_FOUND));
}
exit;