reklama

PHP - Cannot modify header information

ZAJDAN

  • *****
  • 521
    • Zobrazit profil
    • E-mail
PHP - Cannot modify header information
« kdy: 29. 02. 2016, 14:18:05 »
Ahoj,,,
narazil jsem na problém v PHP 'Cannot modify header information'
mam formular a hodnoty z nej POSTuju na php soubor ktery prevezme do promenych hodnoty z formu, dale pomoci knihovny wkhtml vygeneruje PDF. Tento proces sam o sobě facha jak má, jenže trvá dlouho a tak jsem si řekl, že tam lupnu preloader/progress bar a ten se na stránku vygenrejuje pres echo, ale tím pádem odešle headers a následný proces (generováni PDF) se do té stejné stránky browseru snaží headers odeslat taky, což způsobý tu chybu.

dá se s tím nějak vyjebat?

díky za tip
pokud nemáš trpělivost, pokud nemáš odpověď na dotaz, chceš ostatní posílat do kouta nebo je odrazovat, že na to nemají?...nemrhej síly a raději se nevyjadřuj...prostě to ignoruj

reklama


Deli

Re:PHP - Cannot modify header information
« Odpověď #1 kdy: 29. 02. 2016, 14:42:52 »
No nejednodusi je asi nechat generovat pdf na pozadi a jak progress pozna, ze je soubor vygenerovan tak te presmeruje na jinou akci, kde dojde ke stazeni souboru.

ZAJDAN

  • *****
  • 521
    • Zobrazit profil
    • E-mail
Re:PHP - Cannot modify header information
« Odpověď #2 kdy: 29. 02. 2016, 15:48:44 »
No nejednodusi je asi nechat generovat pdf na pozadi a jak progress pozna, ze je soubor vygenerovan tak te presmeruje na jinou akci, kde dojde ke stazeni souboru.
-v mém případě, ale progress proces není synchroní s generováním PDF... uživatel prostě vidí, že se něco děje a to je lepší než blank page.
-dále já ten soubor na serveru neukládám (send to client as file download $pdf->send('report.pdf');)
pokud nemáš trpělivost, pokud nemáš odpověď na dotaz, chceš ostatní posílat do kouta nebo je odrazovat, že na to nemají?...nemrhej síly a raději se nevyjadřuj...prostě to ignoruj

Jenda

Re:PHP - Cannot modify header information
« Odpověď #3 kdy: 29. 02. 2016, 16:11:51 »
Tak bych doporučil ten soubor ukládat…

Možná by mohlo jít posílat to jako multipart

Kód: [Vybrat]
header('Content-type: multipart/x-mixed-replace;boundary=endofsection');
print "Content-type: text/html\n\n";
(progress)
print "\n\n";
print "--endofsection\n";
ob_flush();
flush();
print "Content-type: něco/PDF\n\n";
(formulář)

Ale z uživatelského hlediska mi přijde, že to může dělat problémy.

Re:PHP - Cannot modify header information
« Odpověď #4 kdy: 29. 02. 2016, 16:20:36 »
-v mém případě, ale progress proces není synchroní s generováním PDF... uživatel prostě vidí, že se něco děje a to je lepší než blank page.
to se dela tak... <div id="throbber-id"> obvykle absolutni pozice. pozadi gif image. display: none;

Kód: [Vybrat]
$(".trida-odkazu-ke-stazeni").click(function() {
  $("#throbber-id").show();
});
Děkuji za možnost editace příspěvku.


ZAJDAN

  • *****
  • 521
    • Zobrazit profil
    • E-mail
Re:PHP - Cannot modify header information
« Odpověď #5 kdy: 29. 02. 2016, 16:28:59 »
to se dela tak... <div id="throbber-id"> obvykle absolutni pozice. pozadi gif image. display: none;
Kód: [Vybrat]
$(".trida-odkazu-ke-stazeni").click(function() {
  $("#throbber-id").show();
});
mas na mysli ten js kod+html element umistit na puvodni page(formular)...? protoze to by ztracelo smysl, pac by se po kliknuti zobrazil v ramci formulare, ale me to po kliknuti presmeruje na 'generatePDF.php' a tam se o tom html elementu(gif) jiz nic nevi
pokud nemáš trpělivost, pokud nemáš odpověď na dotaz, chceš ostatní posílat do kouta nebo je odrazovat, že na to nemají?...nemrhej síly a raději se nevyjadřuj...prostě to ignoruj

Frontstart

Re:PHP - Cannot modify header information
« Odpověď #6 kdy: 29. 02. 2016, 17:58:02 »

ZAJDAN

  • *****
  • 521
    • Zobrazit profil
    • E-mail
Re:PHP - Cannot modify header information
« Odpověď #7 kdy: 01. 03. 2016, 11:28:29 »
https://cs.wikipedia.org/wiki/AJAX
vzhledem k tomu, ze ja to pdf neukladam do souboru ani do db, bylo by nejspis velice obtizne si to zpracovat ajaxem,
vse se deje v pameti a hotove pdf je odeslano klientovy do prohlizece s vyzvou k ulozeni souboru(pdf)
pokud nemáš trpělivost, pokud nemáš odpověď na dotaz, chceš ostatní posílat do kouta nebo je odrazovat, že na to nemají?...nemrhej síly a raději se nevyjadřuj...prostě to ignoruj

Re:PHP - Cannot modify header information
« Odpověď #8 kdy: 01. 03. 2016, 13:39:15 »
ale me to po kliknuti presmeruje na 'generatePDF.php' a tam se o tom html elementu(gif) jiz nic nevi
pokud nemas zadne presmerovani, ale uplne normalni odkaz tak to neodejde ze stranky nybrz nabidne stahovani - teda pokud z generatePDF.php posilas spravne hlavicky. a potom by mnou napsane easy reseni melo fungovat. Aspon me teda funguje pro uplne stejnou vec.
Děkuji za možnost editace příspěvku.

ZAJDAN

  • *****
  • 521
    • Zobrazit profil
    • E-mail
Re:PHP - Cannot modify header information
« Odpověď #9 kdy: 01. 03. 2016, 14:09:57 »
ale me to po kliknuti presmeruje na 'generatePDF.php' a tam se o tom html elementu(gif) jiz nic nevi
pokud nemas zadne presmerovani, ale uplne normalni odkaz tak to neodejde ze stranky nybrz nabidne stahovani - teda pokud z generatePDF.php posilas spravne hlavicky. a potom by mnou napsane easy reseni melo fungovat. Aspon me teda funguje pro uplne stejnou vec.
u me je to tak, ze jakmile uzivatel na formulari klikne na button 'generovat PDF' ...prohlizec otevre nove okno(generatePDF.php) a v momente kdy je renderovani PDF hotovo, vybehne okno s vyzvou k ulozeni souboru
pokud nemáš trpělivost, pokud nemáš odpověď na dotaz, chceš ostatní posílat do kouta nebo je odrazovat, že na to nemají?...nemrhej síly a raději se nevyjadřuj...prostě to ignoruj

ZAJDAN

  • *****
  • 521
    • Zobrazit profil
    • E-mail
Re:PHP - Cannot modify header information
« Odpověď #10 kdy: 01. 03. 2016, 14:15:09 »
ale udelam to jak pises..je zbytecne otvirat nove okno...jinak by tomu bylo pokud by se PDF otevrelo primo do okna prohlizece, tam by to bylo na miste
zmenim tedy:
target="_blank" na target="_self"
a pouziju ten js hide/show jak jsi predtim zminil

díky moc
pokud nemáš trpělivost, pokud nemáš odpověď na dotaz, chceš ostatní posílat do kouta nebo je odrazovat, že na to nemají?...nemrhej síly a raději se nevyjadřuj...prostě to ignoruj

Re:PHP - Cannot modify header information
« Odpověď #11 kdy: 01. 03. 2016, 14:43:59 »
na target se vybodni. aby mu PDF neotevrela zabudovana ctecka tak na to jsou prave hlavicky... si to vygugli - "php header download file"

EDIT: ten js co jsem psal potrebuje jquery. ale prepsat to na cisty js by nemel byt zasadni problem.
Děkuji za možnost editace příspěvku.

ZAJDAN

  • *****
  • 521
    • Zobrazit profil
    • E-mail
Re:PHP - Cannot modify header information
« Odpověď #12 kdy: 01. 03. 2016, 15:01:50 »
na target se vybodni. aby mu PDF neotevrela zabudovana ctecka tak na to jsou prave hlavicky... si to vygugli - "php header download file"

EDIT: ten js co jsem psal potrebuje jquery. ale prepsat to na cisty js by nemel byt zasadni problem.

jj, diky za tipy..ted uz by to mela byt snadna akce :)
pokud nemáš trpělivost, pokud nemáš odpověď na dotaz, chceš ostatní posílat do kouta nebo je odrazovat, že na to nemají?...nemrhej síly a raději se nevyjadřuj...prostě to ignoruj

ZAJDAN

  • *****
  • 521
    • Zobrazit profil
    • E-mail
Re:PHP - Cannot modify header information
« Odpověď #13 kdy: 01. 03. 2016, 16:51:20 »
tož už to valí ..už to fachá :_) thanx once again
pokud nemáš trpělivost, pokud nemáš odpověď na dotaz, chceš ostatní posílat do kouta nebo je odrazovat, že na to nemají?...nemrhej síly a raději se nevyjadřuj...prostě to ignoruj

Ivan Nový

Re:PHP - Cannot modify header information
« Odpověď #14 kdy: 10. 03. 2016, 15:26:32 »
Ahoj,,,
narazil jsem na problém v PHP 'Cannot modify header information'
mam formular a hodnoty z nej POSTuju na php soubor ktery prevezme do promenych hodnoty z formu, dale pomoci knihovny wkhtml vygeneruje PDF. Tento proces sam o sobě facha jak má, jenže trvá dlouho a tak jsem si řekl, že tam lupnu preloader/progress bar a ten se na stránku vygenrejuje pres echo, ale tím pádem odešle headers a následný proces (generováni PDF) se do té stejné stránky browseru snaží headers odeslat taky, což způsobý tu chybu.

dá se s tím nějak vyjebat?

díky za tip

Jasně, že dá, to pdf získejte pomocí file_get_contents na url, které ho vygeneruje,  to uložte do tmp souboru, pak redirect na url s parametrem název tmp souboru, které provede download.

 

reklama