Autor | Zpráva | ||
---|---|---|---|
Brouzdalek Profil |
#1 · Zasláno: 27. 10. 2007, 20:14:26
Ahoj,
mám tenhle příkaz:
Má za úkol vyhledat kód z databáze podle $kod. U každýho formuláře generuju kód, aby se nemohl form. znovu odeslat (ochrana pře ZPĚT), tzn. že ve skutečnosti tento příkaz ohlásí chybu a nic nenalezne (pokud byl formulář odeslán poprvé), po opakovaném odeslání se stejným kódem by se měla stránka přesměrovat, nebo vypsat chybu.. Bohužel, zkoušel jsem x pokusů ( i s if), ale výsledek se nedostavil, viz:
Předem dík všem za rady, uvítám i nápady na lepší řešení :) |
||
Mastodont Profil |
#2 · Zasláno: 27. 10. 2007, 20:38:41
Brouzdalek
Ty máš formulář pro vyhledávání a z něj posíláš ten kód. Můžeš ho posílat buď metodou GET nebo POST. GET se používá právě třeba u vyhledávání - parametry jsou předávány přímo v adrese a taková adresa se dá přidat i do záložek. U GET ale není - IMHO - důvod k přesměrování, protože když dáš zpět a form znovu odešleš, tak se nic hrozného nestane, jen znovu vyhledáš to samé. POST se používá třeba při přihlašování nebo destrukčních operacích (mazání apod.) a u něj se využívá přesměrování. Když přijde POST požadavek, tak ho okamžitě zpracuješ a přesměruješ na nějakou neutrální adresu. Čili v tvém případě je to dvojí odesílání naprosto zbytečné. |
||
Taps Profil |
#3 · Zasláno: 27. 10. 2007, 20:40:36
Brouzdalek
a nezkoušel jsi to třeba takto: $sql1 = "SELECT kod FROM ".$prefix."zadost WHERE kod=".$kod."; |
||
Brouzdalek Profil |
#4 · Zasláno: 27. 10. 2007, 20:43:47
No já sem o asi blbě vysvětlil. Odesílám ke zpracování formulář (je to taková žádost, má asi 10 polí). Součástí je i vytovření kódu, který se uloží do proměnné
$kod. Poté dochází k vyhodnocování formuláře přes PHP script. Tam je ta podmínka, že formulář se stejným vygenerovaným kódem lze uložit do databáze pouze jednou (aby nebyl uložen v db. vícekrát). A aby to šlo rozpoznat, tak tam mám ten SELECT do databáze. No a pokud je všechno dobře, tak by to nic nemělo vrátit, popř. chybu, ale ikdyž použiju if, atd. tak to pořád nefunguje a nechová tak, jak bych chtěl.... U formuláře mám klasický <form action="#nazev_scriptu">.. |
||
Brouzdalek Profil |
#5 · Zasláno: 27. 10. 2007, 20:44:27
Taps: To už taky, ale nešlo to, nevím, kde je chyba...
|
||
Brouzdalek Profil |
#6 · Zasláno: 27. 10. 2007, 20:46:45
Rád bych využíval i jinej způsob tohoto ověřování, ale zatím mě ještě nic jinýho nenapadlo.. :(
|
||
Mastodont Profil |
#7 · Zasláno: 27. 10. 2007, 21:01:32
Brouzdalek
Aha, tak pokud je to ukládání, tak to je jiná, tam to přesměrování určitě patří. Taky by sis mohl ty kódy ukládat do session. |
||
Brouzdalek Profil |
#8 · Zasláno: 27. 10. 2007, 21:03:13
To mě taky napadlo, ale jak to potom udělat se zrušením dané sessions ? Já totiž sessions používám k autorizaci uživatelů na stránkách, takže je najednou zlikvidovat nemůžu :)
|
||
Mastodont Profil |
#9 · Zasláno: 27. 10. 2007, 21:13:56 · Upravil/a: Mastodont
A co přesně ti tam nefunguje - to přesměrování neproběhne? Nebo je problém v tom, že ti za Header chybí ještě exit? Header samo o sobě neukončí provádění kódu ...
|
||
Brouzdalek Profil |
#10 · Zasláno: 27. 10. 2007, 21:35:30
No pokud používám tlačítko zpět, tak se formulář znovu a znovu odesílá, což je nežádoucí... potřebuju to nějako omezit. Header používám jen pro přesměrování současně s použitím toho SELECTU z databáze...
3lo by využít sessions nebo něco jinýho ? |
||
Časová prodleva: 3 dny
|
|||
Brouzdalek Profil |
#11 · Zasláno: 30. 10. 2007, 19:57:32
Nevíte si s tím někdo rady ? Přivítám každou pomoc a nápad...
|
||
Časová prodleva: 16 let
|
0