Autore Topic: [Risolto] Output non volontario utilizzando la funzione Header  (Letto 1214 volte)

Offline Marcolène

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
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:




Codice: [Seleziona]

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.
« Ultima modifica: 19 Giu 2014, 15:01:58 da Marcolène »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Output non volontario utilizzando la funzione Header
« Risposta #1 il: 17 Giu 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
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline Marcolène

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
Re:Output non volontario utilizzando la funzione Header
« Risposta #2 il: 17 Giu 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.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Output non volontario utilizzando la funzione Header
« Risposta #3 il: 18 Giu 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()
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline Marcolène

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
Re:Output non volontario utilizzando la funzione Header
« Risposta #4 il: 18 Giu 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

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Output non volontario utilizzando la funzione Header
« Risposta #5 il: 19 Giu 2014, 08:20:18 »
ricordati che un [risolto] nel titolo del post di apertura aiuta anche gli altri...

ciao
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 

Host

Torna su