Baixar arquivo seguro em PHP, negar usuário sem permissão
Eu estou fazendo um site onde você pode comprar arquivos para pontos virtuais e baixá-los. Não quero permitir que os usuários façam o download dos arquivos sem comprá-los, então tenho que ocultá-los. Eu coloquei todos os arquivos em uma pasta sem permissão para ninguém, exceto host, o problema é quando alguém compra um arquivo e quer baixá-lo.
Eu decidi fazer um arquivo getter, que irá verificar as permissões do usuário e depois imprimir o conteúdo do arquivo. Meu código até agora:
<?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
?>
Agora, quando tenho certeza de que o usuário está autorizado a fazer isso, o phpScript deve gravar o conteúdo do arquivo e enviar o cabeçalho apropriado para permitir que o usuário baixe o arquivo.
Como ler o arquivo byte-by-byte e imprimi-lo e o que devo escrever no cabeçalho (), para tornar o arquivo passível de download (para que você não precise copiar o seu conteúdo).
Talvez essa não seja a melhor maneira de fazer isso, mas foi a melhor coisa que pensei em algum tempo.
Obrigado por qualquer ajuda.