我想保护pdf文件不被直接链接,而是让我登录的用户能够访问它.我有一个链接,目前转到一个
javascript函数发布一个表单:
$( ‘nameofdoc’)的setProperty( ‘价值’,DOC).
.的document.getElementById( ‘sendme’)提交();
其中sendme是表单的名称,name的名称是我想要显示的文档的索引.
然后转到php文件:
$docpath = $holdingArray[0].$holdingArray[1];
$file = $holdingArray[0]; //file name
$filename = $holdingArray[1]; //path to the file]
header( 'Location:'.$docpath ) ;
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="'.$filename . '"');
readfile($filename)
这一切都很好,它加载文件并输出pdf.我不能做的是保护目录免受直接链接 – 即www.mydomain.com/pathToPdf/pdfname.pdf
我曾经想过使用.htaccess来保护目录,但是它在共享主机上,所以我不确定安全性,无论如何,当我尝试时,我无法让它工作.
任何帮助都会很棒,因为这是我尝试解决这个问题的第四天.
谢谢
更新
我有很多帮助,谢谢你,但我还没到那里.
我有一个.htaccess文件,当从目录请求pdf时,它现在启动另一个php文件:
RewriteEngine on
RewriteRule ^(.*).(pdf)$fileopen.php
当fileopen.php文件启动时,无法打开pdf
$path = $_SERVER['REQUEST_URI'];
$paths = explode('/', $path);
$lastIndex = count($paths) - 1;
$fileName = $paths[$lastIndex];
$file = basename($path);
$filepath = $path;
if (file_exists($file)) {
header( 'Location: http://www.mydomain.com'.$path ) ;
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=".$file);
readfile($filepath);
}else{
echo "file not found using path ".$path." and file is ".$file;
}
输出是
使用路径/documents/6/Doc1.pdf找不到文件,文件是Doc1.pdf
但该文件确实存在,并在那个direcotry – 任何想法?
好的,我很高兴地报道Jaroslav真的帮助我解决了这个问题.他的方法运行良好,但是将所有目录内容排成一行很棘手.最后,我花了几个小时玩组合来使它工作,但他给出的原则很好.谢谢