Diskuze: problem s header
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
header musi byt vlozeny uplne na zaciatku stranky a pred nim nesmie byt ani
prazdny riadok, ako ani HTML kod...
cezi takto:
<?php
header (...)
PHP KOD
?>
HTML kod
kazde jedno vypisanie do stranky zabezpeci poslanie hlavicky a to sposobi vygenerovanie chyby, ze uz je header pouzity
Tomu rozumím, já nevím, jak udělat, aby ve formuláři při špatném
zadání byly zachovány hodnoty v kolonkách.
Dle článku je to řešené přesměrováním pomocí header. Jenže to
použít nemůžu viz tvoje odpověď. Tak se ptám, jak to vyřešit
jinak...
prostě ten řádek s header přesuneš úplně na začátek toho php soubor.
odeslání header je v článků z důvodu aby nedocházelo k následnému znovuodeslání formuláře při reloadu stránky. Při odeslání header se vyčistí $_POST.
pokud chceš aby při špatně vyplněném formuláři zůstal formulář
předvyplněn tak na stránce kde zpracováváš výstup z formuláře použij
podmínku
if ($odesláno) { // odesláno, uloženo do databáze a pod.
header('Location: index.php'); // přesměruj se kam potebuješ dál
}
else {
header('Location: index.php?jmeno=$prijmeni='); // nebo se vrať na stránku z
formulářam a přes $_GET si předej obsah.
Pokud nechčeš předávat obsah zpět přes $_GET tak můžeš použít
$_SESSION
}
tuto podmienku by som dal uplne na zaciatok stranky, lebo inak, ak by sa vygeneroval pred nou vystup do stranky, tak funkcia header() ti vyhlasi presne tuto chybu
jednoducho praca s funkciou header() patri uplne na zaciatok suboru, ked este nie je vkladanie vystupu do stranky
Ahoj, chtěl bych s zeptat, jestli existuje nějaká jiná možnost jak
přesměrovat na jinou stránku, když nelze použít header? Mám stránku, do
které se mi načítá stránka formulář (http://www.itnetwork.cz/…dani-stranek). A potřebuji
nakonec přidat přesměrování na stránku s výpisem dat.
idaálně
$edit = mssql_query('UPDATE tabulka SET Nazev = "' . $nazev . '", ICO = "' . $ico . '", DIC = "' . $dic . '", Adresa = "' . $adresa . '", Telefon = "' . $telefon . '", Email = "' . $email . '" WHERE ID_Dodavatel = ' . $_POST['id_dodavatel'] . '');
if($edit)
{
$hlaska = ('Editováno');
header('Location: http://www.neco.cz/formular/uvod.php?strana=test2');
exit();
}
Nevím, jak se to dělá dnes, ale dříve jsem používal toto:
echo "<meta http-equiv='Refresh' content='0;URL=..'>";
Díky moc. Pomohlo to. Ani nedokážu vysvětlit přoč jsem se tomu chtěl
vyhnout. Nenapadlo mě, že to bude fungovat. Ještě jednou dík
Co presne pomohlo? resim ten stejny problem
A proč nepoužít header?
Běžná praxe je ta, že na začátku php skriptu se nejdřív zpracují akce
(uložení, smazání, cokoliv..) přes ify a pokud je třeba headery, tedy
pokud některá z těch podmínek platí, provede se kód, pošle hlavička na
přesměrování a zavolá se exit();.
Používání html refreshe je krajně nevhodné.
Další alternativou, jak obejít nefunkčnost header() kvůli předchozímu výstupu je output buffering.
Output Buffering - Jestli si to dobře pamatuji, začíná PHP soubor
ob_start();// Spusit
a končí
ob_end_flush(); // Odeslat a vypnout buffer
pozn. To je jen postup, který dovoluje "odesílat" hlavičku i po vypsání textu.
Omlouvám se za případné chyby, moc to nepoužívám.
pomohl mi meta refresh. Už jsem asi někdě četl, že to neni vhodné jak
píše Richard. Dokud jsem měl stránku čistou a vykonávali se nejdříve
scripty a poté až výpis, header fungoval. Po tom co jsem stránku začal
vlkádat do hlavní stránky pomocí http://www.itnetwork.cz/…dani-stranek
už header nefungoval.
Ano, preste stejny problem jsem mel, kdyz jsem v tutorialu na clanek
sestavovan istranek pomoci php
Ale jde to elegantne vyresit objekty, viz clanek "Jednoduchy redakcni system v
PHP (MVC). Ja se prokousal serialem o objektovem programovani v PHP a ted delam
ten redakcnci system a tam se presne tohle resi pomoci objektu, takze az se k
tomu prokouses, zadnej metarefresh potrebovat nebudes
Zobrazeno 16 zpráv z 16.