Защита документов PDF от прямого доступа в URL
Я хочу защитить PDF-файл от прямой ссылки, но вместо этого пользователи, вошедшие в систему, смогут получить к нему доступ. У меня есть ссылка, которая в настоящее время идет на функцию JavaScript, которая отправляет форму: $ ('nameofdoc'). SetProperty ('value', doc); . Document.getElementById ( 'SendMe') представляет ();
где sendme - это имя формы и name of doc - индекс документа, который я хочу отобразить.
Это тогда идет в файл 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, который теперь запускает другой файл php при запросе pdf из каталога:
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.
но файл существует и находится в этой директории - есть идеи ??
Хорошо, я рад сообщить, что Ярослав действительно помог мне разобраться в проблеме. Его метод работает хорошо, но сложно выстроить все элементы каталога. В конце я потратил несколько часов, играя с комбинациями, чтобы заставить это работать, но принцип, который он дал, работает хорошо. Спасибо