PHP - Cannot modify header information

ZAJDAN

  • *****
  • 2 078
    • 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


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

  • *****
  • 2 078
    • 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');)
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

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

  • *****
  • 2 078
    • 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Frontstart

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

ZAJDAN

  • *****
  • 2 078
    • 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)
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

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

  • *****
  • 2 078
    • 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 078
    • 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

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

  • *****
  • 2 078
    • 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 :)
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 078
    • 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

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.