Bezpieczne pobieranie plików w PHP, odmawianie dostępu bez zgody użytkownika
Tworzę stronę internetową, w której można kupić pliki dla wirtualnych punktów, a następnie je pobrać. Nie chcę pozwolić użytkownikom na pobieranie plików bez ich zakupu, więc muszę je ukryć. Umieszczam wszystkie pliki w folderze bez pozwolenia dla nikogo oprócz hosta, problem polega na tym, że ktoś kupuje plik i chce go pobrać.
Postanowiłem stworzyć narzędzie do pobierania plików, które sprawdzi uprawnienia użytkownika, a następnie wydrukuje zawartość pliku. Mój kod do tej pory:
<?php
require_once('content/requirements.php'); //mysql connections
secure(1); //disconnect unlogged users
if (!isset($_GET['id'])) //if no file id provided
die();
$fid=mysql_real_escape_string($_GET['id']); //file id
$query="SELECT * FROM files WHERE user_id = "$_SESSION['user_id']." AND file_id = ".$id;
$q=mysql_query($query);
if (mysql_num_rows($q)!=1) //if no permission for file or multipe files returned
die();
$file=mysql_fetch_array($q); //file id
$sub=mysql_fetch_array(mysql_query("SELECT * FROM sub WHERE id = ".$file['file_id'])); //payment id
?>
Teraz, gdy jestem pewien, że użytkownik jest do tego upoważniony, phpScript powinien napisać zawartość pliku i wysłać odpowiedni nagłówek, aby pozwolić użytkownikowi go pobrać.
Jak odczytać plik bajt po bajcie i wydrukować go i co powinienem napisać w nagłówku (), aby plik był do pobrania (więc nie musisz kopiować jego zawartości).
Może nie jest to najlepszy sposób, żeby to zrobić, ale to była najlepsza rzecz, o której myślałem przez jakiś czas.
Dzięki za każdą pomoc.