我打算用PHP制作一个图像托管系统。 我想知道如何隐藏用户的图像,以便只能通过特殊网址访问它们。
我需要讨论包含htaccess的所有技术。
答案 0 :(得分:8)
将文件放在相对根目录之外,并使用showimage.php之类的脚本从webroot外部获取文件并将其流式传输给用户。代码看起来像:
$len = filesize($filename);
header("Content-type: image/jpeg");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=\"$new_filename\"");
readfile($filename);
此外,由于您正在运行脚本,因此您可以在脚本中执行身份验证/授权。这允许您设置modRewrite规则,例如:
RewriteRule ^images/(.*)$ /showimage.php?file=$1
这样你的图像文件就可以像以下一样重复:
www.domain.com/images/somefile.jpg
而不是:
www.domain.come/showimage.php?file=somefile.jpg
答案 1 :(得分:3)
你写了一个小的php脚本,它读取图像文件并将内容发送到客户端。 PHP脚本可以检查其参数和cookie,并将图像保存在文档根目录之外的某个位置。
答案 2 :(得分:3)
只是不要将图像存储在Web根目录中。使用php文件来管理访问。如果要显示文件,请执行以下操作:
<?php
header('Content-type: image/jpeg');
$f = file_get_contents('path/to/image.jpg');
print $f;
?>
答案 3 :(得分:1)
我希望不是让PHP进程在发送内容时长时间发送文件和hog服务器资源..创建一个脚本,将文件复制到具有随机名称的目录,然后只发送该文件给用户并让另一个脚本在设置间隔后清除该目录..如果创建时间超过30分钟..删除..这样你最小化你只需要一个apache进程发送回文件而不是apache + php进程。
答案 4 :(得分:0)
将它们放在文档根目录中的一个目录中。然后,使用.htaccess文件来抓取它们:
RewriteBase /
RewriteRule ^(.+?)\.jpg$ ../imgs/$1.jpg
答案 5 :(得分:-1)
我认为最好的方法是加密它。