Olá pessoal,
Estou criando uma funcionalidade de segurança em PHP que verifica se o usuário do nosso portal está em sessão. Se ele estiver, verifica se ele tem acesso ao produto que o arquivo é vinculado. Até ai tudo bem! O grande lance é que eu consigo forçar o download de todos os arquivos, menos dos instaladores, que são os itens que necessitam de mais segurança.
Tente e pesquisei de tudo, espero que possam me ajudar, nessa primeira vez no fórum.
Abaixo segue o código total da função:
function startDownload() { $pfdir = $_GET['path']; $pdir = dirname($pfdir); $pfile = basename($pfdir); $dir = dirname($_SERVER['SCRIPT_FILENAME'])."/"; $dir .= $pdir."/"; $file = $dir.$pfile; $jfile = basename($file); $rs = self::verifyFile($jfile); if($rs){ if(self::verProduto($rs['id'])){ if(is_file($file)){ header('Content-Description: File Transfer'); header('Content-Disposition: attachment; filename="'.$jfile.'"'); header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($file)); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Expires: 0'); ob_clean(); flush(); readfile($file); exit; }else{ // Arquivo não existe na pasta Downloads echo "<h3>Erro 10: Não foi possível encontrar o arquivo.</h3>"; } }else{ // Não existe o curso vinculado ao arquivo no contrato do usuário echo "Erro 12: Arquivo não encontrado na sua lista de Downloads."; } }else{ // Arquivo não existe no banco de dados echo "<h3>Erro 11: Não foi possível encontrar o arquivo.</h3>"; } }