[ melez @ 04.06.2006. 15:25 ] @
Kada popunim formu i pritisnem dugme submit podaci se upisu u bazu i otvori se novi ekran gde pise da su podacu uspesno uneti i ispod toga lista unetih podataka. Ako na toj strani pritisne refresh dugme u browseru on ponovo unese iste podatke u bazu (dodaje u bazu iste podatke samo menaj ID). Kako mogu da resim ovaj problem u mom PHP fajlu? Da li se moze nekako spreciti da on ponovo salje informacije ili onemoguciti refresh?

Pozz
[ mkele @ 04.06.2006. 15:34 ] @
Postavi barem jednu kolonu u bazi na uniqatnu
[ flylord @ 04.06.2006. 15:34 ] @
Uradi redirekciju posle submita na neki URL, i najbolje da ti taj novi URL radi i verifikaciju podataka

Code:

header("Location: $url");


help: http://php.net/header
[ melez @ 04.06.2006. 17:07 ] @
postoji kolona koja je primary key ali kazem kada se uradi refresh on ponovo doda podatke ali pod sledecim brojem


pr.key name age
1 aca 20

refresh

pr.key name age
2 aca 20
[ mkele @ 04.06.2006. 19:32 ] @
Postoji razlika izmedju unikatnog i primarnog:

A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row...

http://dev.mysql.com/doc/refman/5.0/en/create-table.html

Ako ne zelis sa ovim da se bakces, mozes da napravis internu proveru, verifikaciju, pre ubacivanja podatka u bazu tipa: "Ako postoji ovaj podatak u tabeli, onda ga ne upisuj!";
Posle svakog refresh-a korisnik dobija, a i ne mora, poruku:"Ovaj podatak (npr. username) vec postoji"
[ The Sekula @ 07.06.2006. 10:24 ] @
Prosto resenje je da na stranici gde ti je formular postavis u session promenlive flag, recimo $_SESSION['insert'] = true;, a da zatim na strani koja unosi podatke prvo proveris da li je fleg setovan na true, ako jeste resetuje se na false i radi se insert. Ako nije samo ispises podatke.


Jos bolje resenje je da to ne bude prost true/false fleg, vec da bude brojac koji ces inkrementirati na svakoj strani, ali i prosledjivati vrednost kroz formular. Time sprecavas slozenije back/forward/refresh scenarije. Znaci pre svega imas brojac u session varijablama koji inkrementiras na svim stranama. U formularu imas hidden polje gde upisujes trenutnu vrednost brojaca. Na stranici koja radi insert radis insert samo ako je trenutna vrednost brojaca za jedan veca od vrednosti prosledjene kroz formular.
[ Dejan Krstic @ 07.06.2006. 20:28 ] @
Covek ima problem sto mu browser radi post ka stranici kad uradi refresh i ne kapiram kakve veze ima da li je polje unique ili nije.

Resenje je jednostavno da nakon sto se izvrsi unos podataka uradi redirekcija ka nekoj drugoj stranici a to je najbolje sa header funkcijom php-a kao sto je vec neko napisao gore.
[ dariodosen @ 13.06.2006. 21:03 ] @
if (isset($_GET['action'])){header('location: '.$_SERVER['PHP_SELF'].'?kosarica=1'); }
u headeru i gotovo!
Ovo je moj primjer za web shop.
action inace ide na flagove pod pojedine vrste naredbi, recimo $_SERVER['PHP_SELF'].'?action?=delete...
recimo:
if (isset($HTTP_GET_VARS['action'])) $action = $HTTP_GET_VARS['action'];
switch ($action) { ..... } itd.
i to sve još u headeru,
zatim

if (isset($_GET['kosarica'])){
echo 'Sadržaj vaše košarice';
echo prikazi_kosaricu();

gdje je funkcija prikazi_kosaricu() naravno definirana u include file-u.
U svakom slučaju, nakon što se izvrši naredba kada se klikne (isset je true)
ne bi smjelo stajati u address baru action?=delete.

Da li netko zna kako izvesti verifikaciju registracije s onim iskrivljenim slovima, koja se moraju prepisati?
Jeli tu neophodan GDI library ili nije.
Što se same generacije znakova tiče, to mislim da bih znao izvesti, ali te efekti sa slovima ne znam kako kreirati.

[Ovu poruku je menjao dariodosen dana 13.06.2006. u 22:15 GMT+1]
[ neddim @ 14.06.2006. 23:44 ] @
Najjednostavnije rijesenje.
Ubaci HTML tag za redirekciju u body-te stranice na kojoj se izvrsava refresh i podesi ga na "0".
Napravi tu drugu stranicu gdje se zahvaljujes, a ovu na koju se upucuje nakon submita ostavi praznu i to je to.

Evo ti tag:

<META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://www.tvojastranica.com">

I tu nece biti nikakvih problema.
Ne vidim zasto komplikovanim putem.