Descarga segura de archivos en PHP, negar al usuario sin permiso
Estoy creando un sitio web donde puedes comprar archivos para puntos virtuales y luego descargarlos. No quiero que los usuarios descarguen los archivos sin comprarlos, así que tengo que ocultarlos. Puse todos los archivos en una carpeta sin permiso para nadie, excepto para el host, el problema es cuando alguien compra un archivo y quiere descargarlo.
Decidí hacer un captador de archivos, que verificará los permisos del usuario y luego imprimirá el contenido del archivo. Mi código hasta ahora:
<?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
?>
Ahora, cuando estoy seguro de que el usuario está autorizado para hacer esto, phpScript debe escribir el contenido del archivo y enviar el encabezado apropiado para permitir que el usuario lo descargue.
Cómo leer el byte por byte del archivo e imprimirlo y qué debo escribir en el encabezado () para que el archivo se pueda descargar (para que no tenga que copiar su contenido).
Tal vez esta no sea la mejor manera de hacerlo, pero fue lo mejor que pensé en un tiempo.
Gracias por cualquier ayuda.