[ASP/HTML] page expired

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • RallyBanally
  • Registratie: November 2002
  • Laatst online: 26-12-2023
Beste Tweakers,

Op dit moment ben ik bezig met een webwinkel. Echter wanneer de bezoeker klaar is met bestellen wordt hij doorverwezen naar Paypal of Ideal. Als de bezoeker nu op de 'back' button van zijn of haar browser klikt kan men de bestelling nog een keer uitvoeren met als gevolg dat de bestelling 2 of meerdere keren in de db komt te staan.

Wat ik echter wens is dat de pagina, bij het klikken van de 'back' button, een 'page expired' melding geeft.

Nu is dit een veelvoorkomend probleem. Er is ook ontzettend veel te vinden over dit onderwerp. Echter heb ik nog geen enkele oplossing gevonden die ook in IE 8.0 werkt. Ik weet dat bij het gebruiken van een ssl verbinding dit automatisch gaat. Echter is ssl tot op heden nog uitgesloten.

Ik ben dus opzoek naar server-side (ASP) script, html code of javascript.

Het volgende heb ik geprobeerd (ASP):
code:
1
2
3
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"


Het volgende heb ik geprobeerd (ASP):
code:
1
2
3
4
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1000
Response.Expiresabsolute=Now()-1


Het volgende heb ik geprobeerd (HTML):
code:
1
2
3
 <meta http-equiv="expires" content="Sun, Dec 31 1970 12:00:00 GMT" />
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="pragma" content="no-cache" />


Het volgende heb ik geprobeerd (Javascript):
Het truucje door de pagina direct weer een forward te geven. Echter sta ik niet achter deze oplossing.

Op elk forum beweerd men dat de bovenstaande oplossingen werken. Toch is dit niet zo. Kunnen jullie me verder helpen?

Gr, Rally

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 17-09 14:28
Je kan ook een ID meegeven dat de POST niet geldig meer is. Je geeft dan alles een uniek ID mee en daarop ga je controleren, bijvoorbeeld dat je het in sessies zet. Zo doe ik dat in ieder geval in PHP, weet niet precies hoe dat met ASP zit.

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Je back button gaat naar een pagina toe, echter doet hij dit met de data zoals jij er in het verleden naartoe bent gegaan.
Dit is dus bij een POST ook je post-data.

Het lijkt mij dat de melding die je browser toont een waarschuwing is voor de gebruiker, dat deze nu opnieuw data post naar een pagina, en dit misschien wel helemaal niet wil. (denk aan reactie plaatsen op een forum)

Volgens mij (en dit beredeneer ik) is het zo dat er op het moment van de melding nog helemaal niks verstuurd is. Een header toevoegen is dus sowieso geen oplossing.

een html <meta> tag is nog dwazer, omdat je dan zelfs al bezig bent met het laden van de pagina, en dus de melding al voorbij bent.

Je zou het inderdaad preventief kunnen oplossen door na een post direct te forwarden (header Location: etc.) naar een niet-post pagina.

edit:
Je zou natuurlijk eens kunnen kijken hoe bijv. t.net het doet

[ Voor 13% gewijzigd door BasieP op 07-09-2009 14:20 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • RallyBanally
  • Registratie: November 2002
  • Laatst online: 26-12-2023
Manuel schreef op maandag 07 september 2009 @ 13:42:
Je kan ook een ID meegeven dat de POST niet geldig meer is. Je geeft dan alles een uniek ID mee en daarop ga je controleren, bijvoorbeeld dat je het in sessies zet. Zo doe ik dat in ieder geval in PHP, weet niet precies hoe dat met ASP zit.
Ik begrijp je oplossing. Op deze manier kan ik er wel voor zorgen dat de informatie in de db niet voor een 2de keer wordt opgeslagen. Echter krijg ik dan nog steeds niet mijn directe melding. Ik hoop eigenlijk, dat als een bezoeker op 'back' drukt, gelijk een melding ontvangt met 'page expired'.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 17-09 14:28
RallyBanally schreef op maandag 07 september 2009 @ 14:28:
[...]


Ik begrijp je oplossing. Op deze manier kan ik er wel voor zorgen dat de informatie in de db niet voor een 2de keer wordt opgeslagen. Echter krijg ik dan nog steeds niet mijn directe melding. Ik hoop eigenlijk, dat als een bezoeker op 'back' drukt, gelijk een melding ontvangt met 'page expired'.
Je kan dan per if werken lijkt me. Dan geef je bijvoorbeeld in rode letters het probleem weer, zoals in dit geval dat zijn/haar post informatie is verlopen.

PHP:
1
2
3
$_SESSION["UNIQID"] = time();
//post geweest
$_SESSION["UNIQID"] = false;


Zo doe je dat ongeveer in PHP :)

Acties:
  • 0 Henk 'm!

  • RallyBanally
  • Registratie: November 2002
  • Laatst online: 26-12-2023
Manuel schreef op maandag 07 september 2009 @ 15:01:
[...]

Je kan dan per if werken lijkt me. Dan geef je bijvoorbeeld in rode letters het probleem weer, zoals in dit geval dat zijn/haar post informatie is verlopen.

PHP:
1
2
3
$_SESSION["UNIQID"] = time();
//post geweest
$_SESSION["UNIQID"] = false;


Zo doe je dat ongeveer in PHP :)
Dit heeft me iig in de goede richting gebracht. Althans dat hij niet 2 keer hetzelfde opslaat. Ik geef nu in een sessie het order nummer mee. Hij controleert dan, als bezoekers opnieuw willen bestellen, of dat order nr al bestaat. Als het bestaat slaat hij het gedeelte, opslaan in db, over. Bedankt! _/-\o_

Acties:
  • 0 Henk 'm!

  • Kermit.de.Kikker
  • Registratie: Februari 2002
  • Laatst online: 19:49
Volgens mij is je proces dus als volgt:

1) Winelkwagen pagina met button om te bestellen
2) Processor pagina die je order opslaat en redirect
3) Paypal o.i.d.

Wat je doet is op pagina 1 set je een session variabele met een unieke waarde (bv timekey of random code/nummer), deze waarde zet je ook in je formulier en/of in je url
In pagina 2 check je of die parameter gelijk is met je session variabele, dan clear je die sessie variabel en voer je de andere acties uit. Is hij niet gelijk of leeg dan redirect je naar een fout pagina

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 17-09 14:28
RallyBanally schreef op maandag 07 september 2009 @ 15:10:
[...]


Dit heeft me iig in de goede richting gebracht. Althans dat hij niet 2 keer hetzelfde opslaat. Ik geef nu in een sessie het order nummer mee. Hij controleert dan, als bezoekers opnieuw willen bestellen, of dat order nr al bestaat. Als het bestaat slaat hij het gedeelte, opslaan in db, over. Bedankt! _/-\o_
Gelukkig maar :) Verder als je wilt kan je de error pagina dan ook invoegen of simpel door een alert (Javascript) een waarschuwing geven dat de kans dan is dat ze dubbel betalen (dat wil namelijk niemand lijkt me :)). Indien er verder nog iets dat we voor je kunnen betekenen zeg het dan even! ;)
Pagina: 1