将某些文件保密

发布于 2024-10-10 18:49:52 字数 671 浏览 3 评论 0原文

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

I was trying to create a directory of private files that could only be accessed when a user logs in. To do this, I used a folder outside the web directory, and then php to access it, if allowed.

Here's an example:

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)`);

}

This works great for images, but breaks the media player. Also, I've only tested this locally on a Linux machine.

Any ideas? Thanks.

This is in movie.php...

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

喜爱皱眉﹌ 2024-10-17 18:49:52

你的 movie.php 中的
是什么?

您是否尝试查看 movie.php 是否回显文件内容? (在您的页面上查看源代码,然后复制电影源代码“​​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_NOT_FOUND 是一个常量,如果未找到所请求的电影,您想要显示的电影。

您可以做的另一件事是在您的源 src 中输入电影 php 的完整 uri(例如“http://localhost/some/uri/movie.php?file=...”

您从哪里开始在 movie.php 中获取 $fileDir 、 $file 和 $ext 吗?


编辑:应该解决您遇到的 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;

What is with the <br /> in you're movie.php ?

Did you tryed to see if movie.php echoes the file contents ? ( view source on you're page , then copy the movie source src "movie.php?file=..." and paste it in you're browser , see if it get's the movie out ) .

Allso you need to move the header and echo inside the if statement , if that file doens't exist you can echo a different standard movie :

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;

Where MOVIE_NOT_FOUND is a constant, movie you whant to display if the requested one is not found .

One other thing you could do is enter you're full uri to the movie php in you're source src ( like "http://localhost/some/uri/movie.php?file=..."

From where do you get $fileDir , $file and $ext in you're movie.php ?


Edit: should take care of the file_get_contents problem you have

$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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文