Proteger documentos PDF de serem acessados ​​diretamente em URL

Eu quero proteger um arquivo pdf de estar diretamente ligado, mas em vez disso, meus usuários logados podem acessá-lo. Eu tenho um link que atualmente vai para uma função javascript que publica um formulário: $ ('nameofdoc'). SetProperty ('value', doc); document.getElementById ('sendme'). submit ();

onde sendme é o nome do formulário e o nome do documento do índice do documento que desejo exibir.

Isso então vai para um arquivo 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)

Isso tudo funciona bem, carrega o arquivo e gera o pdf. O que eu não posso fazer é proteger o diretório de links diretos - ou seja, www.mydomain.com/pathToPdf/pdfname.pdf

Eu pensei em usar o .htaccess para proteger o diretório, mas ele está em um host compartilhado, então eu não tenho certeza sobre a segurança e, de qualquer maneira, quando eu tentei, não consigo fazê-lo funcionar.

Qualquer ajuda seria ótima, já que este é o meu quarto dia tentando consertar isso.

obrigado

Atualizar

Tive muita ajuda, obrigado, mas ainda não cheguei lá.

Eu tenho um arquivo .htaccess que agora lança outro arquivo php quando um pdf é solicitado a partir do diretório:

 RewriteEngine on
 RewriteRule ^(.*).(pdf)$ fileopen.php

Quando o arquivo fileopen.php é lançado, ele não abre o arquivo 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;
 }

A saída é um arquivo não encontrado usando o caminho /documents/6/Doc1.pdf e o arquivo é Doc1.pdf

mas o arquivo existe e está nesse direcotry - alguma idéia ??

OK, estou feliz em informar que Jaroslav realmente me ajudou a resolver o problema. Seu método funciona bem, mas é difícil conseguir alinhar todas as coisas do diretório. No final, passei algumas horas brincando com combinações para fazê-lo funcionar, mas o princípio que ele deu funciona bem. obrigado

questionAnswers(3)

yourAnswerToTheQuestion