Nasıl sadece privledged kullanıcıların php ile pdf formatında indirmek için izin verebilir?

3 Cevap php

Benim sunucuda depolanan bazı pdf dosyaları var ve ben sadece ücretli olan bir kişinin belirli bir pdf indirmek erişmesini izin vermek istiyorsunuz diyelim.

Yani bir örnek için, Diyelim ki e-kitap bir grup var diyelim. Onun hesabı söz konusu kitabın için doğru kimlik bilgileri içeriyorsa, bir kullanıcı e-kitap A indirmek mümkün olacak tek yoludur.

Bunu gerçekleştirmek için en iyi yolu nedir?

Fikrimi nasıl geliştirileceği konusunda herhangi bir fikir / tavsiye büyük takdir!

Benim geçerli fikir:

  • Bir kullanıcı bir sipariş

  • Upon success, a new folder would be created by their /account_num/order_id/ A copy of the particular file would be stored in this directory

  • Have php generate an .htaccess that would only allow access from a url that contains a random hash embedded into it.
  • The only way a user would be able to access this random hashed page is if they are signed in as the right user, and the hash matches up with the hash stored in the database, otherwise they are redirected to home page.

3 Cevap

Belge kök altında PDF'leri saklayın. download.php?file=A.pdf: Birisi, diyelim A.pdf indirmek istediğinde, gibi bir PHP sayfaya yönlendirecektir. Isteyen kullanıcının yetkilerini kontrol edin ve onların ayrıcalıkları yeterince iyi olup olmadığını A.pdf bir indirme zorlamak için bu download.php sayfa yazıyorum.

1) böylece kimse bir tarayıcı aracılığıyla doğrudan acess yapabilirsiniz belge kök dışında bulunan PDF'leri tutun

Onları almak için tek yolu başarılı bir giriş ve doğrulanmış edilerek ve bu her download zorlanır böylece 2) bir PHP sayfası PDF dosyasını kadar hizmet ettiniz

PHP (giriş fırçalayın emin olun lütfen) ama dosya indirirken için Kod:

<?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;
?>

Belge kök dışında PDF'leri saklayın (çünkü bazı topal hosting kurulumu mümkün değilse, onları tahmin etmek zor yere saklayın).

Kullanıcı izni olup olmadığını kontrol edin, ve sonra gibi bir şey yapın:

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

Sen daha başlıklarını ayarlamak gerekebilir, ama bu temel fikir.