Forum » Programiranje » PHP header problem
PHP header problem
l0g1t3ch ::
Naredu sm skripto s katero UL-jam csv datoteko in jo spremenim v ustrezen xml ter shranim v neko mapo na strežniku kjer jo lahko uporabnik kasneje pobere.
Je pa to nepraktično in bi rad namesto, da shranjujem na strežniku to datoteko takoj ponudu uporabniku za DL in tle imam problem.
Na začetku skripte seveda naredim preprosr obrazec za UL in ko bi sedaj rad uporabniku poslav datoteko za dl bi rabu nastavit header, kar pa ne gre saj sem že nekaj poslav (začetni obrazec) in headerja ne gre spreminjat.
Kako se rešit tega ? Slišu sm, da naj bi uporabil ustrezne "ob_" funkcije, samo se mi ne sanja katere naj bi bile to.
Je pa to nepraktično in bi rad namesto, da shranjujem na strežniku to datoteko takoj ponudu uporabniku za DL in tle imam problem.
Na začetku skripte seveda naredim preprosr obrazec za UL in ko bi sedaj rad uporabniku poslav datoteko za dl bi rabu nastavit header, kar pa ne gre saj sem že nekaj poslav (začetni obrazec) in headerja ne gre spreminjat.
Kako se rešit tega ? Slišu sm, da naj bi uporabil ustrezne "ob_" funkcije, samo se mi ne sanja katere naj bi bile to.
MrBrdo ::
Em mislim da ni to problem pri tebi... Pač uporabnik naj submita form na nek PHP (form action atribut) ki samo izpiše tisti XML, na začetku pa še header nastaviš...
MrBrdo
techfreak :) ::
http://php.net/manual/en/function.ob-st...
Tole verjetno
Bolje je vso kodo prestaviti nad vsebino, ker se bo v tem primeru uporabniku stran hitreje naložila, saj bo PHP takoj poslal izpis uporabniku.
Pri ob_start pa se počaka, da se izvajanje skripte konča in šele potem pošlje vso vsebino.
l0g1t3ch ::
Mi lahko kdo pove kako to uporabit, ker mi je ta funkcija pravtako kot cel php en velik WTF.
Skripta zgleda tako, da je na začetku 30 vrstic html-ja potem pa se začne php skripta sama, kako sedaj najlažje naredit, da bom lahko poslav tist fajl uporabniku (kot rečeno je težava v header, ker ga ne morem še enkrat poslat).
P.S. sem samo žrtev, ki mora popravljati od nekoga drugega sranje čeprov nikol nsim delu z php-jem
Skripta zgleda tako, da je na začetku 30 vrstic html-ja potem pa se začne php skripta sama, kako sedaj najlažje naredit, da bom lahko poslav tist fajl uporabniku (kot rečeno je težava v header, ker ga ne morem še enkrat poslat).
P.S. sem samo žrtev, ki mora popravljati od nekoga drugega sranje čeprov nikol nsim delu z php-jem
l0g1t3ch ::
Tole je ta bog pomagi od kode. Umes sm izpustu 500 vrstic slame, ki pomoje ni pomebna.
<?php date_default_timezone_set( "Europe/Ljubljana" ); $radio1 = isset( $_POST['tip_izpisa'] ) && $_POST['tip_izpisa'] == "1" ? "checked" : ""; $radio2 = isset( $_POST['tip_izpisa'] ) && $_POST['tip_izpisa'] == "2" ? "checked" : ""; $radio3 = isset( $_POST['tip_izpisa'] ) && $_POST['tip_izpisa'] == "3" ? "checked" : ""; if( !isset( $_POST['tip_izpisa'] ) ) { $radio1 = "checked"; } echo " <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> <head> <title>Interenergo | Generator voznih redov</title> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /> <meta http-equiv='PRAGMA' content='no-cache' /> <meta http-equiv='CACHE-CONTROL' content='no-cache' /> <meta http-equiv='X-UA-Compatible' content='IE=7' /> <meta http-equiv='X-UA-Compatible' content='chrome=1' /> </head> <body> <h4>Interenergo - generator voznih redov:</h4> <table border='0' cellpadding='3' cellspacing='1' width='600px' style='border:1px solid'> <form name='form_workers' enctype='multipart/form-data' method='post'> <tr class='tabela_polja2'> <td width='150px' style='background-color:#eee8cd'>Izvorna datoteka (CSV):</td> <td style='background-color:#eee8cd'><input type='file' name='upload_file' class='textbox' style='width:100%'></td></tr> <tr class='tabela_polja2'> <td style='background-color:#f5f5f5' colspan='2' align='center' height='30px'> <input type='radio' name='tip_izpisa' value='1' $radio1>APG <input type='radio' name='tip_izpisa' value='2' $radio2>APCS <input type='radio' name='tip_izpisa' value='3' $radio3>RWE </td> </tr> "; if( !isset( $_POST['interenergo_vozni_redi_xml_export'] ) ) { echo " <tr class='tabela_zgoraj'> <td style='background-color:#eee8cd' align='center' height='40px' colspan='2'> <input type='submit' name='interenergo_vozni_redi_xml_export' value='Generiraj datoteko'> </td> </tr> "; } echo "</form>"; //============================================// // Generiranje XML datoteke //============================================// if( isset( $_POST['interenergo_vozni_redi_xml_export'] ) ) { set_time_limit( 120 ); $tip_izpisa = $_POST['tip_izpisa']; $target_folder = "UPLOAD"; $filename = $_FILES['upload_file']['name']; $filename = stripslashes( $filename ); if( substr( $filename, strlen( $filename ) - 3 ) != "csv" ) { echo " <tr class='tabela_polja2'> <td colspan='2' align='center'><font color='#ff0000'>Datoteka za uvoz ni tipa CSV. Izberi drugo!</font></td> </tr> "; $tip_izpisa = -1; } else { $filename = date('Ymd_His_').str_replace( "'", "", $filename ); $copy = move_uploaded_file( $_FILES['upload_file']['tmp_name'], $target_folder."/".$filename ); } $error1 = " <tr class='tabela_polja2'> <td colspan='2' align='center'> <font color='#ff0000'>Struktura dokumenta ni pravilna!</font> </td> </tr> "; $podatki = ""; $ime_datoteke = ""; $errors = false; $stevilo_zapisov = 0; $file_name_out = ""; ... $podatki_export .= "</ScheduleMessage>"; unlink( $target_folder."/".$filename ); $ime_datoteke = $file_name_out.".xml"; //file_put_contents($ime_datoteke, $podatki_export); header("Content-Type: application/xml"); header('Content-Disposition: attachment; filename="downloaded.xml"'); print $podatki_export; // The PDF source is in original.pdf //readfile('original.pdf'); if( !$errors ) { if( $stevilo_zapisov == 0 ) { echo " <form name='form_export_xml' action='' method='post'> <tr class='tabela_zgoraj'> <td align='center' height='50px' colspan='2'> Datoteka ne vsebuje zapisov.<br><br> Preverite, če izvorna datoteka sploh vsebuje podatke in če je aplikacija javila kakšno napako v obdelavi! </td></tr> </form> "; } else { echo " <form name='form_export_xml' action='' method='post'> <tr class='tabela_zgoraj'> <td align='center' height='40px' colspan='2'> <input type='hidden' name='ime_datoteke' value='$ime_datoteke'> <input type='hidden' name='podatki_za_export' value='$podatki_export'> <input type='submit' name='xml_export_out' value='Shrani XML datoteko'> </td></tr> </form> "; } } } echo " </table> </body> </html> "; ?>
Packač ::
Na začetek datoteke (pred html) kliči "ob_start()", na zadnjo vrstico pa "ob_end_flush()".
l0g1t3ch ::
Hm to sicer dela, ampak mi zdej v fajl shrani generiran XML pa kr en html in svašta.
ta skripta je FUBAR.
ta skripta je FUBAR.
Packač ::
Aja oprost, nism pogledu dobr kode.
V glavnem buffer zaženi takoj na začetku, ko pa pride do tistega dela ko pošlješ datoteko izbriši buffer z ob_end_clean() in ko datoteko pošlješ magari zaključiš še z izvajanjem "exit;"
Preberi si kako deluje output buffering. http://si.php.net/manual/en/function.ob...
V glavnem buffer zaženi takoj na začetku, ko pa pride do tistega dela ko pošlješ datoteko izbriši buffer z ob_end_clean() in ko datoteko pošlješ magari zaključiš še z izvajanjem "exit;"
Preberi si kako deluje output buffering. http://si.php.net/manual/en/function.ob...
keworkian ::
Kaj pa ce bi dal recimo
Mislim da bi tole moral delat
$errors = false; $stevilo_zapisov = 0; $file_name_out = ""; ob_start(); $podatki_export .= "</ScheduleMessage>"; unlink( $target_folder."/".$filename ); $ime_datoteke = $file_name_out.".xml"; //file_put_contents($ime_datoteke, $podatki_export); header("Content-Type: application/xml"); header('Content-Disposition: attachment; filename="downloaded.xml"'); $content = ob_get_contents(); ob_end_clean(); echo $content;
Mislim da bi tole moral delat
Obscenities in B-Flat
l0g1t3ch ::
@Knight
ne dela :(
@Packač
ni ql, ker ne izpiše morebitnih napak
ne dela :(
@Packač
ni ql, ker ne izpiše morebitnih napak
Zgodovina sprememb…
- spremenilo: l0g1t3ch ()
keworkian ::
Potem pa header() funckijo ven fukn, pa sam naredi xml, saj to je uver simple :)
Obscenities in B-Flat
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [PHP in/ali JS] skripta, ki gre cez celo stran in zamenja tekst med custom tagiOddelek: Izdelava spletišč | 1153 (1059) | jernejl |
» | Optimizacija strani za mysgl bazoOddelek: Izdelava spletišč | 1303 (1087) | mjakop |
» | PHP: kako bi zbrisal vse datoteke v podmapi TMPOddelek: Programiranje | 1216 (1119) | Cokolesnik |
» | PHP in formeOddelek: Izdelava spletišč | 1133 (947) | Japonski |
» | Html problemčekOddelek: Izdelava spletišč | 1477 (1318) | Ziga Dolhar |