Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, fiz várias pesquisas e todas me mostraram de tudo q nao tem nada a ver com o que eu quero.
Gostaria de fazer um sistema para download, mas quando o usuario clicar no link e mesmo no download não ser possivel ver onde este arquivo esta no servidor, para que toda vez que tente baixar o usuario ser obrigado a passar pelo login e acesso do site.
Desde já muito obrigado.
$file = "/arquivos/fotos.zip";
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
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();
}Esse script do jhrhp
$file = "/arquivos/fotos.zip";
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
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();
}
Ficaria assim:
ob_start();
session_start();
if($_SESSION['usuario']['logado'] == true){
$arquivo = $_GET['arquivo'];
$sql = 'select caminho from arquivos where id_arquivo = "'.$arquivo.'";';//'aqui você buscaria no banco de dados o caminho para o arquivo de acordo com o parametro';
$resultado = mysql_query($sql);
if($file = mysql_fecth_assoc($resultado)){
if (file_exists($file['caminho'])) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
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['caminho']));
ob_clean();
flush();
readfile($file['caminho']);
exit();
}
}
}else{
header('Location: login.php');
}
Seria algo mais ou menos assim: Fiz aqui direto no forum, espero que lhe ajude a encontrar a solucao
brigadão galera. Vo testar aqui!
faça o download passar por um script em PHP impedindo o acesso direto ao arquivo e gerenciando pela sessão do usuário logado, se o mesmo não estiver logado não consegue baixar o arquivo.
Tipo os arquivos seriam enviados para o usuario para download com um link download.php?arquivo=1000 (cadastrado no seu banco de dados) e forçando o download caso o seu usuario esteja logado. Caso não esteja redireciona ele para a pagina de login