2010-05-18 1 views
2

내 서버에 일부 PDF 파일이 저장되어 있으며 유료 사용자가 특정 PDF를 다운로드 할 수 있도록 허용하고 싶다고합니다.어떻게 권한이 부여 된 사용자 만 PHP로 pdf를 다운로드 할 수 있습니까?

예를 들어, 전자 책이 한 권 있다고 가정 해 봅시다. 사용자가 전자 책 A를 다운로드 할 수있는 유일한 방법은 그의 계정에 특정 책에 맞는 자격 증명이 포함되어 있는지 여부입니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

내 아이디어를 개선하는 방법에 대한 아이디어 나 조언을 보내 주시면 대단히 감사하겠습니다.

나의 현재 생각 : 사용자가 특정 파일의 자신의 /ACCOUNT_NUM/ORDER_ID/사본을 만든 순서 성공시

  • , 새 폴더가 될 것 을 배치

    • 이 디렉토리에 이 디렉토리에 저장됩니다

    • php가 에서 액세스를 허용하는 .htaccess를 생성 했습니까? 임의의 해시를 포함하는 URL 에 이 삽입되었습니다.
    • 사용자들이 올바른 사용자 로 로그인 및 해시 데이터베이스에 저장된 해시 와 일치 경우이 임의 해시 페이지입니다 에 액세스 할 수있을 것입니다 유일한 방법, 그렇지 않으면 그들은 리디렉션 홈페이지로.
  • 답변

    4

    PDF를 문서 루트 아래에 저장하십시오. 누군가가 A.pdf라고하는 다운로드를 원할 때 download.php?file=A.pdf과 같은 PHP 페이지로 안내하십시오. download.php 페이지를 작성하여 요청한 사용자의 권한을 확인하고, 권한이 충분하면 A.pdf를 다운로드하십시오. 그래서 아무도 브라우저

    2)를 통해 직접 ACESS 수없는 문서 루트의 외부에있는

    +0

    +1 너무 빠르다 –

    +0

    문서 루트 아래에서 파일을 강제로 다운로드 하시겠습니까? – ThinkingInBits

    +0

    세션, readfile : http://php.net/manual/en/features.sessions.php, http://us.php.net/manual/en/function.readfile.php – webbiedave

    4

    1) 유지 PDF 파일은 유일한 방법은 그들을 것입니다 갈 수 있도록 PHP 페이지는 PDF 파일을 제공 되세요 성공적으로 로그인 검증이가 PHP 불구하고 파일을 다운로드

    코드 모든 다운로드에 적용됩니다되는 (입력을 문질러주십시오) : 문서 루트 외부

    <?php 
        $file_name = $_GET['filename']; // somefile.pdf 
        $file = '/home/pathtofile/' . $file_name; 
    
        header('Content-Description: File Transfer'); 
        header('Content-Type: application/octet-stream'); 
        header('Content-Disposition: attachment; filename=' . $file_name); 
        header('Content-Transfer-Encoding: binary'); 
        header('Expires: 0'); 
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
        header('Pragma: public'); 
        header('Content-Length: ' . filesize($file)); 
        ob_clean(); 
        flush(); 
        readfile($file); 
        exit; 
    ?> 
    
    +0

    많은 분들께 감사드립니다! – ThinkingInBits

    1

    스토어 PDF 파일 (수없는 경우 일부 절름발이 호스팅 때문에 설정, 추측하기 어려운 곳). 당신은 더 헤더를 조정해야 할 수도 있습니다

    <?PHP 
    $pdf_path = '/some/dir/'; 
    header('Content-type: application/pdf'); 
    readfile($pdf_path . 'mydoc.pdf'); 
    

    ,하지만 그 기본 아이디어 : 사용자가 권한을 가지고, 다음과 같이 할 것을

    확인합니다.

    관련 문제