Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Re: Preventing Duplicate Form Submissions

by mirod (Canon)
on Jun 12, 2002 at 00:23 UTC ( #173700=note: print w/replies, xml ) Need Help??


in reply to Re: Preventing Duplicate Form Submissions
in thread Avoiding a second click

What I do in this case is that I store the parameters of the form, and if I find that I have already received it, I check compare the 2 sets of parameters. If they are identical then no problem, I do not process the second form and just resend the result. If there is a difference I send an error message. What you do in this case really depends on your application. You might want to "undo" the first transaction and process the second one.

Update: I forgot to mention that I store the unique identifier in a hidden parameter. This is certainly not completely secure, as the parameter can be changed and intercepted, but I believe it is OK in my case (malicious users changing the parameter would just loose the session and outside attackers trying to hijack the session would get the error message).

  • Comment on Re: Re: Preventing Duplicate Form Submissions

Replies are listed 'Best First'.
Re: Re: Re: Preventing Duplicate Form Submissions
by mothra (Hermit) on Jun 12, 2002 at 15:58 UTC
    Depending on how you're applying this concept, it could be broken. A user might submit the exact same parameters later in the day (e.g. order "one more" of an item they had previously order that day or suchlike), or maybe even five minutes later.
Re: Re: Re: Preventing Duplicate Form Submissions
by MMilani (Sexton) on Jun 12, 2002 at 11:29 UTC
    Dear Mirod, Thank you very much for your kindly reply. I certainly will consider your comments.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://173700]
help
Chatterbox?
[choroba]: but undef %hash and %hash = () both work, too, but the first one keeps the memory allocated, while the latter makes it available for other parts of the program.
[choroba]: iirc
[perldigious]: karlgoethebier: Well it is a pretty old and complicated (for me) bit of code I wrote (poorly by my current standards), so I'm expecting everything to break when I add the scoping and find out what else is undesireably scope changed. :-)
[perldigious]: Ah, thanks choroba, that sort of thing was precisely what I was wondering when I asked.
[perldigious]: I didn't want to tie up memory unecessarily basically, I wanted to "delete" it specifically to free it up, and wasn't sure I was even accomplishing that.
[stevieb]: perldigious You should start by writing some unit tests. That'll ensure current functionality doesn't break with changes.

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2017-07-21 19:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (335 votes). Check out past polls.