保留一些文件私密

时间:2011-01-07 06:51:18

标签: 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' type='video/ogg; codecs=\"theora, vorbis\"'>
</video>", rawurlencode($file)`);

}

这适用于图像,但打破了媒体播放器。另外,我只是在Linux机器上本地测试过它。

有什么想法吗?感谢。

这是在movie.php ...

if(file_exists($fileDir . md5($file) . $ext)) {
  $contents = file_get_contents($fileDir . md5($file) . $ext);
}

header('Content-type: video/ogg');
echo $contents;

1 个答案:

答案 0 :(得分:0)

你在movie.php中的<br />是什么?

你有没有试过看看movie.php是否回应了文件内容? (在你的页面上查看源代码,然后复制电影源src“movie.php?file = ...”并将其粘贴到你的浏览器中,看看它是不是电影出来了。)

所有你需要在if语句中移动标题和echo,如果该文件不存在,你可以回显另一个标准电影:

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_NOT_FOUND是一个常数,那么如果找不到所请求的影片,你就会显示该影片。

你能做的另一件事就是在你的源src中输入你对电影php的全部uri(比如“http://localhost/some/uri/movie.php?file = ...”< / p>

你在哪里获得$ fileDir,$ file和$ ext,你是movie.php吗?


编辑:应该处理你有的file_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;