Joomla.it Forum

Non solo Joomla... => Sviluppo => : Marcolène 17 Jun 2014, 17:01:13

: [Risolto] Output non volontario utilizzando la funzione Header
: Marcolène 17 Jun 2014, 17:01:13
Salve a tutti,
Sto creando un componente e ho un problema con la funzione header di php, penso sia dovuto alla generazione della pagina da parte di Joomla. In pratica devo forzare il download di un file con del testo all'interno, il codice in questione è questo:




:

header ('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header ('Content-Type: application/octet-stream');
header ("Content-Disposition: attachment; filename=\"$file_name\""); 


print ($datadump);


Questo è un metodo e le variabili $file_name e $datadump sono passate come argomento ad esso: la prima si riferisce al nome del file e la seconda al testo da scrivere. Fin qui tutto bene, il codice forza il download e ho il file, solo che andandolo ad aprire scopro che oltre ad aver scritto il testo che mi interessa, ha scritto anche tutta la pagina html. Ho provato con i metodi ob_end_clean e ob_end_flush ma il risultato non cambia, scrive il codice html all'interno del file, secondo me delle chiamate ->loadTemplate('foot'), ->loadTemplate('head'), ecc... nel file default.php. Come posso evitare di far scrivere quel codice nel file? Se sono stato poco chiaro chiedete. Grazie in anticipo


ps. Il codice funziona su una semplice pagina php non generata da Joomla, per questo ho deciso di rivolgermi a questo forum.
: Re:Output non volontario utilizzando la funzione Header
: mmleoni 17 Jun 2014, 17:25:12
inserisci nel link con cui chiami la pagina di download, aggiungendo alla query string che indica componente/view/controller, la chiave 'tmpl=component' in modo da limitare l'output di joomla al solo componente.

ciao,
marco
: Re:Output non volontario utilizzando la funzione Header
: Marcolène 17 Jun 2014, 18:32:23
Per generare l'output su file uso un 'input type="submit" ....'. Nel tag form ho inserito <form action="index.php?option=com_mycomponent&view=mycomponent_view&tmpl=component" ...>. in effetti l'output si è alleggerito, ma scrive ancora alcune parti del codice del template presenti nel file default.php e di conseguenza codice nel file default_head.php e default_foot.php. Si può risolvere in qualche modo anche questo problema? Grazie per l'aiuto.
: Re:Output non volontario utilizzando la funzione Header
: mmleoni 18 Jun 2014, 07:57:26
quella chiave dice a J di non metterci del suo, ma nel codice che scrivi tu sta a te evitare di aggiungere output inutile. probabilmente ti sei dimenticato di interrompere l'esecuzione del codice e richiami comunque parent::display()
: Re:Output non volontario utilizzando la funzione Header
: Marcolène 18 Jun 2014, 22:37:42
Ok grazie ci sono riuscito. Ho utilizzato la funzione ob_clean(); prima e alla fine ho inserito exit(); per interrompere la scrittura del codice successivo (il testo da scrivere era 'intrappolato' tra codice che non mi interessa). Prima utilizzavo ob_end_clean(); e non capisco perché non funzionava.


Ciao Grazie
: Re:Output non volontario utilizzando la funzione Header
: mmleoni 19 Jun 2014, 08:20:18
ricordati che un [risolto] nel titolo del post di apertura aiuta anche gli altri...

ciao