Ir para conteúdo

POWERED BY:

Arquivado

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

numero

Cannot modify header. Sem motivo.

Recommended Posts

Estou querendo fazer download de um arquivo .txt após ter criado. Mas não consigo em 2 páginas das 3 que criei.

Todas tem o mesmo código. Umas mais curtas (a que funciona) e outras mais extensas (as que não funcionam)

Já pesquisei na internet mas não consigo resolver.

Não uso a tag header(), exceto em 1 caso. e tenho certeza q esse caso não interfere.

 

São envolvidos 3 arquivos: dadosdb.php, index.php e download.php

 

O dadosdb.php eu uso com require na página index.php, e na página index.php uso download.php como action do form

 

No dadosdb, além de outras coisas, inseri na primeira linha um header. Antes de inserí-lo, já tinha esse erro do cannot modify header.

header('Content-Type: text/html; charset=utf-8');

depois disso, tenho CONST Conexão com o mysql $menu <style> <script>

 

Na index.php

<head>
<?php require '../../dadosdb.php'?>
<?php echo $menu;?>

e por aí segue o conteúdo, retornando a usar o php somente para pegar o menu. e não mais depois.

 

No download.php

<?php
if (isset($_POST['Enviar'])){
header('Content-Type: text/html; charset=utf-8');

$vaviáveis.....
$cont=conteúdo do txt

$arquivo="Prestadores.RPE";
file_put_contents($arquivo, $cont);

$redirect = "download.php";
header("location:$redirect");
};
	
$arquivo="Prestadores.RPE";
      header("Content-Length: ".filesize($arquivo)); // informa o tamanho do arquivo ao navegador
      header("Content-Disposition: attachment; filename=".basename($arquivo)); // informa ao navegador que é tipo anexo e faz abrir a janela de download, tambem informa o nome do arquivo
      readfile($arquivo); // lê o arquivo
      exit; // aborta pós-ações   
?>

Quando eu envio os dados, ele aponta o erro na linha 93, que está em negrito e sublinhado.

$array=$_POST['incPrest'];
$length = count($_POST['incPrest']);
for ($i = 0; $i < $length; $i++) {

print $cont .='

Linha 93

			<xs:element ref="inclusaoPrestador" minOccurs="1" maxOccurs="unbounded">'.$array[$i].'</xs:element>';
};

Não consigo ver erro de sintaxe, ou qualquer coisa, não sou de usar a tag header(). E aqui ela apenas é usada no início do dadosdb.php e download.php, além do final, onde faço o download do arquivo.

 

O arquivo é criado perfeitamente, mas, na hora do download, não acontece.

 

*****

Como não pegou o negrito e sublinhado na citação do código, está dentro do quote a linha 93

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não pode haver nenhuma saída ao navegador antes de header(). Ou seja, nenhum echo, nenhuma tag HTML e nem sequer um espaço em branco antes da tab <?php.

 

Valeu!

 

Joguei os $_POST para a página index.php

Mantive no download.php apenas os headers, para fazer o download.

 

E usei o location do javascript na index no final do código após inserir e gravar os dados no arquivo.

 

Fazendo o download normalmente.

:joia:

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.