Autor Zpráva
Anonymní
Profil *
nevíte někdo, jestli se dá zabránit tomu aby někdo refreshoval nějakou stránku, nebo alespoň jak zjistit, že je stránka refreshovaná..

například pokud chci omezit odeslání stejných informací podruhé.. něco podobného je na okounovi.cz, aby se nedal 2x poslat stejný příspěvek... jak na to?

a neexistuje nejaka funkce, ktera vymaze vsechny promenne $_POST v prohlizeci ?

napriklad:
mam formular - odeslu
jestlize tam jsou chyby tak je vypisu a zobrazim znova formular
jestlize tam nejsou chyby tak vlozim do db a smazu $_POST...
Leo
Profil
Zamezit dvojnasobnemu odeslani spolehlive nejde, takze to musite osetrit na serveru (v PHP). K druhe casti - v prohlizeci zadne promenne POST nejsou, ty existuji v PHP pri behu skriptu. V HTML existuje input type="reset". Leo
Anonymní
Profil *
tedy? jak na to?
Leo
Profil
Predtim, nez na zaklade pozadavku klienta (odeslani formulare) udelate na serveru nejakou akci se podivate, jestli uz neprisel a nebyl zpracovany predtim. Zalezi na okolnostech. Napriklad pokud jde o pridavani prispevku do databaze tak se proste kouknete, jestli tam uz takovy prispevek nemate (dalsi vetveni zalezi na tom, jestli pouzivate registraci uzivatelu, session, atd.). Zaznam o prvnim poslani formulare (a uspesnem zpracovani) muzete mit v session promennych misto v databazi, nebo v cookie (ale ta se da v prohlizeci zmenit). Leo
krteczek
Profil
jednoduše:

if(podmínka co má být splněno)
{
//vše je v pořádku, a uloženo v databázi
header("location: script-ve-kterem-zobrazite-to-co-se-uložilo.php?patametr1=neco&paramet r2=.....");
exit;
}

tím se vlastně dostanete jinam přesměrováním a znovuvložení pomocí F5 je zabráněno
krteczek
Leo
Profil
"tím se vlastně dostanete jinam přesměrováním a znovuvložení pomocí F5 je zabráněno"

To samo o sobe neosetri vsechny pripady / napriklad tem, ze odeslu formular, jeho obsah dorazi na server, tam se ulozi, ale odpoved ze serveru se zasekne. Kdyz v te chvili dam obnovit nebo jen znovu kliknu na submit, tak to na server prijde znovu podruhe... Leo
Georgík
Profil
Dobrý den.

Nabízím následující řešení.

Pro celou aplikaci se zavede proměnná typu session s razítkem (dále jen StampSession) v následujícím tvaru. Mohla by být například řetězcového typu ve tvaru: "RR-MM-DD HH:MM (číslo Num)" například na "2005-08-30 01:42 124" tj. datetime + mezera + číslo Num.

Inicializace StampSession proběhne při prvním požadavku (requestu). Přitom se vygeneruje aktuální datum (tj. datetime) a poté vloží se spolu s počátečním číslem nula (číslo Num) do naší proměnné StampSession.

Při každém requestu (požadavku GET (často), POST (nejběžnější formuláře), cokoli_jineho (speciální formuláře)):
- zvýšíte číslo Num o 1 a
- vložíte obsah session i se zvýšeným číslem Num do stránky (formuláře) a
- razítko v příchozí stránce se otestuje například tak, že se jeho datetime razítka přišlé stránky porovná s datetime StampSession a číslo Num plus jedna téže stránky se porovná se současným číslem Num ve StampSession.

například:

stránka: "2005-08-30 01:42 123"
session: "2005-08-30 01:42 124"
OK!

stránka: "2006-03-12 21:07 123"
session: "2005-08-30 01:42 124"
CHYBA!

stránka: "2005-08-30 01:42 123"
session: "2005-08-30 01:42 125"
CHYBA!

Kdyby jste měli dotazy, pokusím se je zodpovědět. Možná jsem neřekl všechno nebo přesně.

S přítelským pozdravem Jirka
Toto téma je uzamčeno. Odpověď nelze zaslat.

0