Akwen 1 Denunciar post Postado Abril 3, 2006 Pessoal, tava usando o código abaixo para forçar download... peguei em algum lugar aqui no forum mesmo... deixei os creditos nele. Só que fica muito vulneravel, ja q os dados sao passados pela url... eu pensei em criptografar, mas... sei lá, ainda assim fica vulneravel. Alguém ai tem alguma ideia para melhorar esse código, ou tem algum outro codigo pra me passar? oq eu quero e vamus supor.. um arquivo pdf, ele abrir a janela de download, e nao tentar abrir no navegador.... Segue: <?php##############################################################################################################Autor: Leandro Maniezo - Sistema de download de arquivo --- Data: 04/01/2006 - webmaster@maniezo.com.br ##Para usar basta usar um link por exemplo <a href="arquivo.php?arquivo=bola.jpe&nome=img_bola">Download</a>##Note que ao criar o link passei dois parametros que são "arquivo" e "nome" arquivo é o no do arquivo no meu##exemplo "bola.jpg". Ja o paramento nome é o novo nome do arquivo que vai ser gravado na maquina da pessoa##que estiver fazendo o download, no meu exemplo fico img_bola.jpg, não precisa passar a extensão ele cria##sozinho. # # # #Não se esqueça que no meu exemplo eu considerei que a imagem bola.jpg estava no mesmo diretorio que o# #arquivo.php se as imagens tiver em outro diretorio tera que passar as pastas e niveis juntos. ##############################################################################################################function download(){$tamanho = filesize("$arquivo"); // pega o tamanho do arquivo em bytes$ext = explode (".",$arquivo);// enviar os cabeçalhos HTTP para o browserheader("Content-Type: application/save"); header("Content-Length: $tamanho");header("Content-Disposition: attachment; filename=$nome.$ext[1]"); header("Content-Transfer-Encoding: binary");// abrir e enviar o arquivo$fp = fopen("$arquivo", "r"); fpassthru($fp); fclose($fp);}?> Compartilhar este post Link para o post Compartilhar em outros sites
Akwen 1 Denunciar post Postado Abril 4, 2006 up :( Compartilhar este post Link para o post Compartilhar em outros sites
Akwen 1 Denunciar post Postado Abril 5, 2006 Alguém? :( Compartilhar este post Link para o post Compartilhar em outros sites
Akwen 1 Denunciar post Postado Abril 6, 2006 :( Compartilhar este post Link para o post Compartilhar em outros sites
<?phpman?> 0 Denunciar post Postado Abril 6, 2006 Você pode fazer usando banco de dados, cadastando o nome do arquivo e o diretorio onde ele se encontra downloadFile.php <?require "conexao.php";$fileID = $_GET['fileID'];if($fileID != ""){require("conexao.php");$sql = "SELECT * FROM arquivos WHERE id = '$fileID'";$resultado = mysql_query($sql)or die ("Não foi possível listar os cadastros:: ".mysql_error());$total = mysql_num_rows($resultado);$cont = 1; while ($linha=mysql_fetch_array($resultado)) { $arquivo = utf8_encode($linha["arquivo"]); $dir = utf8_encode($linha["dir"]); $file = "arquivos/".$dir."/".$arquivo; } header("Content-type: application/save"); header('Content-Disposition: attachment; filename="' . basename($file) . '"'); header('Expires: 0'); header('Pragma: no-cache'); readfile("$file"); exit(); echo "<script language='javascript'> window.close(); </script>";}else{ die("Erro ao tentar baixar o arquivo. Tente novamente!");}?> E para exibir o link pra download basta listar do banco de dados Link: downloadFile.php?fileID=$id E da proxima vez tente não da UP no seu post, alem de ser chato, você pode ser penalizado caso algum moderador do forum veja e não goste disso. Compartilhar este post Link para o post Compartilhar em outros sites
Akwen 1 Denunciar post Postado Abril 6, 2006 Não tinha pensado nessa lógica de criar um recordset antes...Bom, código funcionou em partes. Quando eu clico no link, ou acesso a página diretamente passando as variaveis, o arquivo abre no navegador... ao invés de fazer o download. Fiz alguns testes usando o código q eu havia postado, e isso ocorre quando há conexão ao banco....No seu código, coloquei ob_start(); no inicio dele e ob_end_flush(); no final. Agora, quando clico no link, funciona.... Mas quando tento acessar direto, passando as variaveis... ele da o erro(abre no navegador). Meu medo é que.... a pessoa por algum motivo, tente fazer isso e dê esse erro... Compartilhar este post Link para o post Compartilhar em outros sites
marcusc 0 Denunciar post Postado Abril 7, 2006 Dê uma olhada aqui amigo: http://www.php.net/manual/pt_BR/function.header.php Compartilhar este post Link para o post Compartilhar em outros sites
Deivid Roza 0 Denunciar post Postado Abril 27, 2010 ta ok mais i se eu for ao seu site e mudar alguns caracteres dessa linha? www.site.com.br/downloads/downloadFile.php?file=../index.php ou www.site.com.br/downloads/downloadFile.php?file=../wp-settings.php e obtenho apartir disso seu login e senha do banco de dados! Estou disendo isso porque usei o mesmo sistema listado acima e quase perdi meu site todo! ainda bem que vi este tópico. http://forum.wmonline.com.br/topic/169672-forcando-o-download-com-estes-scripts/ desculpe se estou falando bobagem mais usei algo como escrito acima e um cara que eu nem conhecia! dono do tópico acima foi ao meu site, entro em contato comigo via email e me explico como funciona. Compartilhar este post Link para o post Compartilhar em outros sites