Autor | Zpráva | ||
---|---|---|---|
dejvik Profil * |
#1 · Zasláno: 2. 4. 2008, 11:26:57
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 |
#2 · Zasláno: 2. 4. 2008, 11:50:29
dejvik
viz také Nejčastější potíže s PHP (FAQ) |
||
Venca V Profil |
#3 · Zasláno: 2. 4. 2008, 11:56:00 · Upravil/a: Venca V
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 |
#4 · Zasláno: 2. 4. 2008, 12:00:42
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 * |
#5 · Zasláno: 2. 4. 2008, 13:12:12
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 * |
#6 · Zasláno: 2. 4. 2008, 13:17:51
tak uz jsem nasel chybu, mel jsem jen spatne podminku v klauzuli where
|
||
orava Profil |
#7 · Zasláno: 2. 4. 2008, 14:58:39
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 |
#8 · Zasláno: 2. 4. 2008, 15:51:46 · Upravil/a: imploder
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 |
#9 · Zasláno: 2. 4. 2008, 19:29:01
ja tam napisem
or die('Tento zaznam tam uz je'); |
||
imploder Profil |
#10 · Zasláno: 3. 4. 2008, 13:27:57
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 * |
#11 · Zasláno: 3. 4. 2008, 13:53:16
no tak sa tam neda
or die(); |
||
Časová prodleva: 16 let
|
0