Jump to content
Sign in to follow this  
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>";
			}
	}

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...

Edited by faustino.luiz

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.