|
| Dobbelt bestilling Fra : Harald |
Dato : 01-02-07 11:00 |
|
Hej
Kunder bestiller varer og går ind i indkøbskurven.
De udfylder navn og adresse og trykker på bestil knappen.
Jeg kalder derefter unset($_SESSION['minKurv']); for at tømme kurven, men
alligevel kan de trykke på tilbage i deres browser, få de bestilte varer
frem og bestille dem igen og derved lave en "dobbet" bestilling af de samme
varer, hvordan forhindre jeg dette?
/HK
| |
Bertel Lund Hansen (01-02-2007)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 01-02-07 11:17 |
|
Harald skrev:
> Jeg kalder derefter unset($_SESSION['minKurv']); for at tømme kurven, men
> alligevel kan de trykke på tilbage i deres browser, få de bestilte varer
> frem og bestille dem igen og derved lave en "dobbet" bestilling af de samme
> varer, hvordan forhindre jeg dette?
Jeg er ikke sikker på at det reelt kan forhindres.
Du kan tjekke på om to ordrer er identiske, med det kunne
teoretisk godt være at kunden bestilte i to omgange.
På én hjemmeside var jeg ude for at bestille to gange
(klamphuggersiden virkede ikke rigtigt i Opera). Kort efter fik
jeg en mail med en besked om dobbeltbestillingen og en forklaring
på hvordan jeg let kunne annulere den ene (eller begge) ordrer.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Martin (01-02-2007)
| Kommentar Fra : Martin |
Dato : 01-02-07 11:18 |
|
Harald wrote:
> Hej
>
> Kunder bestiller varer og går ind i indkøbskurven.
> De udfylder navn og adresse og trykker på bestil knappen.
> Jeg kalder derefter unset($_SESSION['minKurv']); for at tømme kurven, men
> alligevel kan de trykke på tilbage i deres browser, få de bestilte varer
> frem og bestille dem igen og derved lave en "dobbet" bestilling af de samme
> varer, hvordan forhindre jeg dette?
Kører din bestilling også via noget database?
I databasen kan du så sætte et "ordrer_sent" = 1 når ordren er bestilt,
og hvis ordrer_sent = 1 - så kan man ikke få "kurven" frem igen
| |
Harald (01-02-2007)
| Kommentar Fra : Harald |
Dato : 01-02-07 16:39 |
|
"Martin" <maaNO@SPAMscandesigns.dk> skrev i en meddelelse
news:45c1be58$0$49208$14726298@news.sunsite.dk...
> Harald wrote:
>> Hej
>>
>> Kunder bestiller varer og går ind i indkøbskurven.
>> De udfylder navn og adresse og trykker på bestil knappen.
>> Jeg kalder derefter unset($_SESSION['minKurv']); for at tømme kurven, men
>> alligevel kan de trykke på tilbage i deres browser, få de bestilte varer
>> frem og bestille dem igen og derved lave en "dobbet" bestilling af de
>> samme varer, hvordan forhindre jeg dette?
>
> Kører din bestilling også via noget database?
> I databasen kan du så sætte et "ordrer_sent" = 1 når ordren er bestilt, og
> hvis ordrer_sent = 1 - så kan man ikke få "kurven" frem igen
Alle bestillinger bliver smidt ind i $_SESSION['minKurv']); og når navn og
adresse så udfyles og der trykkes på SEND så gemmes ordren i en MySQL base,
men jeg vil gerne forhindre at de kan få kurven med indhold frem igen, hvis
der trykkes tilbage i browseren skal der helst stå at "Kurven er tom"
ligesom der normalt står når kunden ikke har puttet noget i kurven.
/HK
| |
Arne Feldborg (02-02-2007)
| Kommentar Fra : Arne Feldborg |
Dato : 02-02-07 02:01 |
|
"Harald" <nomail@noname.dk> skrev Thu, 1 Feb 2007 16:39:24 +0100
>Alle bestillinger bliver smidt ind i $_SESSION['minKurv']); og når navn og
>adresse så udfyles og der trykkes på SEND så gemmes ordren i en MySQL base,
>men jeg vil gerne forhindre at de kan få kurven med indhold frem igen, hvis
>der trykkes tilbage i browseren skal der helst stå at "Kurven er tom"
>
Det vil du næppe umiddelbart kunne opnå. Når der trykkes tilbage i
browseren ser brugeren jo faktisk det foregående billede, som ligger
cachen, og der er bestillingen jo netop ikke afsendt.
Kunne det være en udvej, at bruge javaascript til at nulstille
history(), så der simplethen ikke var nogen "forrige side".?
--
mvh, A:\Feldborg
Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/
| |
Harald (02-02-2007)
| Kommentar Fra : Harald |
Dato : 02-02-07 08:09 |
|
"Arne Feldborg" <feldborg@haunstrup.dk> skrev i en meddelelse
news:kr25s2l601d6mpvgs8d9i8rtdd5es1rueh@4ax.com...
> "Harald" <nomail@noname.dk> skrev Thu, 1 Feb 2007 16:39:24 +0100
>
>
>>Alle bestillinger bliver smidt ind i $_SESSION['minKurv']); og når navn og
>>adresse så udfyles og der trykkes på SEND så gemmes ordren i en MySQL
>>base,
>>men jeg vil gerne forhindre at de kan få kurven med indhold frem igen,
>>hvis
>>der trykkes tilbage i browseren skal der helst stå at "Kurven er tom"
>>
> Det vil du næppe umiddelbart kunne opnå. Når der trykkes tilbage i
> browseren ser brugeren jo faktisk det foregående billede, som ligger
> cachen, og der er bestillingen jo netop ikke afsendt.
>
> Kunne det være en udvej, at bruge javaascript til at nulstille
> history(), så der simplethen ikke var nogen "forrige side".?
Jeg mener nu at jeg har engang har prøvet det selv på nogle sider hvor jeg
så fik at vide at siden jeg prøvede at komme tilbage til var forældet og det
derfor ikke kunne lade sig gøre, men lige hvilken side det var kan jeg ikke
huske.
/HK
| |
Martin (02-02-2007)
| Kommentar Fra : Martin |
Dato : 02-02-07 15:31 |
|
Harald wrote:
> Alle bestillinger bliver smidt ind i $_SESSION['minKurv']); og når navn og
> adresse så udfyles og der trykkes på SEND så gemmes ordren i en MySQL base,
> men jeg vil gerne forhindre at de kan få kurven med indhold frem igen, hvis
> der trykkes tilbage i browseren skal der helst stå at "Kurven er tom"
> ligesom der normalt står når kunden ikke har puttet noget i kurven.
Start med at have en variabel i din session med et unikt id dette kunne
fx. laves med
uniqid(md5(rand()), true);
denne streng putter du så i en session og den følger så minKurv hele
tiden - når så det hele bliver sat ind i databasen så sætter du også
dette unikke id ind i databasen sammen med kurven.
Så sætter du et nyt ID med samme streng.
Så kan disse 2 aldrig komme til at se ens ud.
| |
|
|