Autor | Zpráva | ||
---|---|---|---|
kozusnik.jan Profil * |
#1 · Zasláno: 2. 6. 2010, 18:22:30
Když dám odeslání formuláře, tak se má pomocí fce header přesměrovat jinam, ale mi to píše "Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\pokusy\fotoablum.php:9) in c:\apache\htdocs\pokusy\fotoablum.php on line 39"
Anglicky sice umím, takže jsem si to přeložil, ale nevím, jak to zpravit. ZDROJOVÝ KÓD: <?php if($ok) { $soubor = "a_" . date("Ymd_Gis") . ".html"; $fp = fopen($soubor, "w") or die ("Nelze otevřít soubor!!"); fwrite($fp, "<h1 align=center>$album</h1>\n"); fwrite($fp, "<p align=center><i>$popis</i></p>\<p>\n"); fwrite($fp, "<p><p align=center>\n"); for($i=1; $i<=5;$i++) { $fotka = "fotka" . $i; $fotka_name = $fotka . "_name"; $fotka_type = $fotka . "_type"; $fotka_size = $fotka . "_size"; $popis = "popis" . $i; if($$fotka_type=="image/jpeg" || $$fotka_type=="image/pjpeg" || $$fotka_type=="image/gif" || $$fotka_type=="image/x_png" ) { copy($$fotka, "./images/{$$fotka_name}") ; fwrite($fp, "<table align=left><tr><td align=center>"); fwrite($fp, "<a href=\"./images/{$$fotka_name}\" target=\"foto\">"); fwrite($fp, "<img src=\"./images/{$$fotka_name}\" alt=\"Fotografie\" border=0 width=300></a> </td></tr>\n"); fwrite($fp, "<td><td align=center><i>{$$popis}</i>\n"); fwrite($fp, "</table>"); } if($i==3) fwrite($fp, "<br clear=left\n"); } fwrite($fp, "</p>\n"); fclose($fp); header("Location: $soubor"); } else { ?> <form action="<?php echo $PHP_SELF ?>" method="post" enctype="multipart/form-data"> <table> <tr> <td><b>Album:</b></td><td><input type="text" size="25" name="album" /></td> </tr> <tr> <td><b>Popis:</b></td><td><input type="text" size="25" name="popis" /></td> </tr> </table> <table corder=1> <tr> <th>Fotky</th><th>Soubor</th><th>Popis</th> </tr> <tr> <td>1</td><td><input type="file" name="fotka1" /></td><td><input type="text" name="popis1" /></td> </tr> <tr> <td>2</td><td><input type="file" name="fotka2" /></td><td><input type="text" name="popis2" /></td> </tr> <tr> <td>3</td><td><input type="file" name="fotka3" /></td><td><input type="text" name="popis3" /></td> </tr> <tr> <td>4</td><td><input type="file" name="fotka4" /></td><td><input type="text" name="popis4" /></td> </tr> <tr> <td>5</td><td><input type="file" name="fotka5" /></td><td><input type="text" name="popis5" /></td> </tr> </table> <input type="submit" name="ok" value="Vložit" /> </form> <?php } ?> |
||
mckay Profil |
#2 · Zasláno: 2. 6. 2010, 18:30:27 · Upravil/a: mckay
kozusnik.jan:
Nebudu ti opravovat konkrétní formulář, ale vysvětlím ti to takto - pokud chceš modifikovat hlavičku, nesmíš mít předtím žádný výstup, tudíž před funkcí header(); nesmí být žádný echo, ani html tag, ani mezera chápeš? |
||
kozusnik.jan Profil * |
#3 · Zasláno: 2. 6. 2010, 18:32:49
No, když jsem to napsal úplně nahoru nad DOCTYPE, tak mi to hodilo chybu. Takže moc nechápu :-( . Mohl bys to trošku přesněji vysvětlit?
Dík |
||
mckay Profil |
#4 · Zasláno: 2. 6. 2010, 18:38:12
kozusnik.jan:
Dobře, ukážu to na příkladech: Špatně: <?php echo "Neco, co by tady vůbec nemělo co dělat"; header("location: http://nekam.cz"); ?> <!Doctype... > <html> <head> Dobře: <?php if(isset($_GET["presmerovat"])) { header("location: http://nekam.cz"); } ?> <html> <head> </head> ... Pointou je, že v první ukázce máš skript sice na začátku, ale ten skript v době svého běhu vygeneruje text, tudíž ztrácíš možnost upravit hlavičku. Pointou druhého příkladu je, že můžeš použít jakoukoliv konstrukci, která neprodukuje výstup a ještě stále potom můžeš měnit hlavičku... jakmile prostě vygeneruješ jakýkoliv znak, hlavičku není možné modifikovat. |
||
kozusnik.jan Profil * |
#5 · Zasláno: 2. 6. 2010, 18:44:35
mckay:Dík, už to jede :-D
|
||
Časová prodleva: 14 let
|
0