Autor Zpráva
Peeter
Profil *
Nevím jestli jsem přesně vystihl název tématu ale jde mě o následovné. Vytvořil sem si návštěvní knihu za pomocí PHP a MySQL. Vše je v pořádku ale když odešlu příspěvek a zmáčknu F5 (aktualizovat) a správa kterou jsem odeslal se odešle ještě jednou. Pročítal jsem nějaké články a dozvěděl jsem se že by tomu mohl pomocí Header v PHP. Žádám vás o radu jak tento problém vyřešit.
Mike8748
Profil
teorie:
máš zobraz.php který ti zobrazí aktuální zprávy v knize. dale je tam formulář pro přidání vzkazu, ma nastavené action="pridej.php"

ve skriptu pridej.php z $_POST vytáhneš data, a zapíšeš do DB. pak uděláš přesměrování na zobraz.php, právě pomocí
Header('Location: http://www.tvojestranka.cz/zobraz.php');[/pre] (před použitím header nesmí být žádné echo, žádný výstup)

přesměrování pomoci header() zajistí že se POST ztratí a nic se znova ukládat nebude. (samozdřejmě zobraz.php a pridej.php může být jeden soubor)
Peeter
Profil *
No já to mám udělané tak že když něco napíšu tak formulář i tlačítko na odesílání zůstane tak aby se to nikam nepřesměrovávalo. Takhle by to nešlo?
Mike8748
Profil
to presmeruj na sebe sama... jsem psal ze skript pro vypis a zapis do db muze bejt jeden soubor

jde o to ze prave to presmerovani zpusobi ztratu POST dat, je uplne jedno jestli to presmerujes na jinou adresu nebo na tu samou na ktere se zrovna nachazis
Draslík
Profil *
Aha to je dobré, jen ještě bych potřeboval nějak to doplnit aby se to přesměrovalo jen jednou(po aktualizaci) protože takhle mě to píše že je tam smyčka a nepustí mě to dál...
panther
Profil
Draslík:
protože takhle mě to píše že je tam smyčka a nepustí mě to dál...
musíš to samozřejmě mít v podmínce, zda byl formulář odeslán.
Draslík
Profil *
A ta vypadá jak?
Mike8748
Profil
[kod]
if (existuji POST data)
{
zapis data do db (pridej do db novy prispevek)
presmeruj na sebe sama
}
zobraz data z db (vypis obsah knihy)
[/kod]
přesměrování použiješ pouze v případě že budeš vkládat nový příspěvek
Draslík
Profil *
Aha jasný díky...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0