我有一个简单的php文件,在让他看到内容之前建议登录用户,这实际上是视频文件的预览。
实际上视频文件位于php文件同一级别的目录中(假设videoDir
),这样我就可以访问php文件了
和视频文件一样
http://someurl.com/videoDir/videoName.mov
http://someurl.com/videoDir/videoName2.mov
http://someurl.com/videoDir/videoName3.mov
现在,登录页面让用户正确登录,然后看到视频预览,但是,登录与否,用户将始终能够以这种方式下载他的直接网址(http://someurl.com/videoDir/videoName.mov)上的任何视频
所以我猜测是否可以将直接网址重定向到登录页面(可能是.htaccess
?),最好的方法是什么?
您的信息:该页面位于Ubuntu上,由Apache管理。
答案 0 :(得分:0)
首先,您需要禁用用户的目录列表。在您的目录中打开.htacess
并输入下一行:
Options -Indexes
Order Deny, Allow
Deny from all
Allow from local
其次,在任何情况下,您的index.php
都将作为本地脚本运行。然后,您必须检查登录状态并发送文件进行下载,如下所示:
// open the file in a binary mode
$name = './videoDir/videoName.mov';
$fp = fopen($name, 'rb');
// send the right headers
header("Content-Type: video/quicktime");
header("Content-Length: " . filesize($name));
// dump the picture and stop the script
fpassthru($fp);
exit;
答案 1 :(得分:-1)
在.htaccess
文件中添加以下行:
RewriteRule ^/file/(.*) /handleFiles.php?path=$1 [L]
在handleFiles.php
文件内容将是:
<?php
$auth = 0;
if (!isset($PHP_AUTH_USER))
{
header('WWW-Authenticate: Basic realm="Login"');
header('HTTP/1.0 401 Unauthorized');
print "you need to login";
exit;
}
else
{
if ($PHP_AUTH_USER == "UserName" and $PHP_AUTH_PW == "Password")
{
$auth=1;
$file = implode('', file('/file/'.$path);
print $file;
exit;
}
else
{
header('WWW-Authenticate: Basic realm="Login"');
header('HTTP/1.0 401 Unauthorized');
print "you need to login";
exit;
}
}
if ($auth==0) {
print "you need to login";
exit;
}
?>