Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保留一些私人文件_Php_Private_Html5 Video - Fatal编程技术网

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

我试图创建一个只有在用户登录时才能访问的私有文件目录。为此,我使用了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' 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;