가장 쉬운 방법은 바로 (발전기 스크립트가 수행 등), 그 기능 readfile("/path/to/contract.pdf");
그 방법이다 유효한 세션의 존재를 필요로하는 PHP 스크립트를 가지고 아마, 당신은 당신의 PDF 래퍼 스크립트를 가질 수 있습니다 다운로드되는 계약이 디렉토리에있는 계약이 아니라 sesion에있는 사람의 올바른 계약인지 확인하십시오.
디렉토리에 대한 .htaccess 기반 솔루션의 문제점은 디렉토리에 대한 읽기 권한이있는 사람은 누구나 어떤 계약서를 다운로드 할 수 있다는 것입니다.
는
http://example.com/contract.php?user=132&bill=1
당신이 할 수처럼 URL을 감안할 때 : 중간에
<?php
$user = $_GET['user'];
$bill = $_GET['bill'];
# do input validation on $user and $bill. No really, do it.
if ($user != $_SESSION['user']) {
die("Security error; the black choppers are on their way.");
}
header("Content-type: application/pdf");
header('Content-Disposition: attachment; filename="Contract-$user-$bill.pdf"');
readfile("/path/to/pdfspool/$user/Contract-$user-$bill.pdf");
if()
덩어리가 요청 된 $ 사용자가 현재 사용자의 유효 함을 확인합니다. 분명히이 사용자가 처음 로그인 할 때 $ _SESSION [ 'user']을 저장하려고합니다.
물론 스풀 파일을 보관할 필요는 없습니다. PDF 생성 프로세스가 웹 서버를 압도하지 않을 경우 (그리고 다른 문제가있는 경우), 요청에 따라 각 PDF를 처음부터 다시 생성하는 것이 더 쉽습니다. 이것이 회사 청구서로 지금하는 일이며, 각 인보이스에는 생성 된시기와 어떤 IP 주소에서 요청했는지를 나타내는 6 포인트 푸터가 있습니다. :)
사용자가 주소 표시 줄의 PDF 스크립트에 대한 직접 URL을 입력하는 것이 현명하다면 어떻게해야합니까? 예를 들어, www.mysite.com/contracts/124/5.pdf를 입력하십시오. –
업데이트 됨. 세션 변수에 대해 $ 사용자의 유효성을 검사하는 코드 섹션을 추가했습니다. – ghoti