Autor Zpráva
dejvik
Profil *
potreboval bych poradit ohledne znovu zapsani udaju do databaze - mam napr. formular, ktery odeslu nejakemu skriptu a ten ho ulozi do databaze. Problem ovsem nastava, kdyz na te same strance uzivatele resfreshne stranku, skript probehne znovu a ulozi ty same udaje do databaze. Docetl jsem se, ze jako ochrana proti tomuto slouzi funkce Header("Location: nekam.php"); a ze pred ni nesmi byt zadny vypis (echo). Ovsem i tak mi hlasi chybu - Cannot modify header information - headers already sent by ... Kdyz se podivam ktery je to radek, tam ten, ktery provadi dotaz. Diky za vsechny namety, jak na tuto "zahadnou" funkci
Taps
Profil
dejvik
viz také Nejčastější potíže s PHP (FAQ)
Venca V
Profil
Funkce header() zas tolik záhadná není, jen jí nesmí předcházet žádný výstup :-) IMHO je ideální mít script, který přidává data do db v odděleném souboru, a z něj se potom vracet zpět pomocí proměnné $_SERVER['HTTP_REFERER']. Příklad:
mysql_query("insert into někam (něco) values ('něco')");
header("Location: ".$_SERVER['HTTP_REFERER']);
nightfish
Profil
a z něj se potom vracet zpět pomocí proměnné $_SERVER['HTTP_REFERER'].
otázkou je, co takový skript udělá, když si v prohlížeči/firewallu/proxy zablokujete posílání refererů
dejvik
Profil *
prosel jsem vsechny popsane moznosti, ktere by mohly zpusobit chybu teto funkce a vysledek bzl stejny. Zkousel jsem to na skriptu, ktery upravuje data. kdyz jsem to ted zkousel na skriptu, ktery uklaa data do databaze, tak kupodivu nenastala zadna chyba a skript probehl jak mel...
dejvik
Profil *
tak uz jsem nasel chybu, mel jsem jen spatne podminku v klauzuli where
orava
Profil
ja to robim tak ze si v mysql urcim na jekau premenu index (napr Clanok )a ten nesmie byt nikdy rovnaky a tak sa to nezapise
imploder
Profil
ja to robim tak ze si v mysql urcim na jekau premenu index (napr Clanok )a ten nesmie byt nikdy rovnaky a tak sa to nezapise
To sice zní použitelně, ale jak takhle rozlišíš jestli se uživatel na stránku jen vrátil nebo to nejde z jiného důvodu a v takovém případě by se mělo objevit chybové hlášení? Je dost matoucí když to nahlásí chybu v operaci, kterou uživatel vlastně vůbec nechtěl znovu provádět a jen se chtěl na tu stránku vrátit.
orava
Profil
ja tam napisem

or die('Tento zaznam tam uz je');
imploder
Profil
orava: to jo, ale představ si, že někdo se na tu stránku prostě vrátí a vůbec netuší, že se tím znovu spustí skript na přidání záznamu. Hláška, že ten záznam už tam je, mu bude znít nesmyslně když se tam přece žádný přidat nepokouší.
orava))
Profil *
no tak sa tam neda
or die();

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: