Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

faustino.luiz

Problema ao forçar download.

Recommended Posts

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>";
			}
	}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que não consegue? Qual é o problema exatamente? Dá erro? qual?

 

Habilite todas as exibições de erro como mostrado neste tópico. Também remova os header()'s, para fim de testes, para que as mensagens de erro sejam exibidas, caso haja alguma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que não consegue? Qual é o problema exatamente? Dá erro? qual?

 

Habilite todas as exibições de erro como mostrado neste tópico. Também remova os header()'s, para fim de testes, para que as mensagens de erro sejam exibidas, caso haja alguma

 

Beraldo, obrigado pela resposta.

 

Me desculpe, não informei o principal: o erro.

 

Eu tentei mas não aparece nenhuma mensagem na tela, usando ini_set( 'display_errors', true ); e error_reporting( E_ALL );.

 

O erro é o

Esta página da web não está disponível

ERR_INVALID_RESPONSE

 

que o Chrome apresenta.

 

 

Eu estava fazendo uns testes aqui e gerou o arquivo, só que uma mensagem de erro:

 

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 253040641 bytes) in /var/www/vhosts/##meusite##/portal/app/control/Download.class.php on line 567

A solução foi dar um ini_set('memory_limit', '2048M'); devido ao fato de os arquivos de instaladores serem maiores que 1gb e não chegarem a 2 gb. Defini para 2 gb de limite.

 

mas parece que está dando internal server error, eu consegui baixar um arquivo apenas.

 

Ainda sem solução...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.