RE: [PHP-WIN] Preventing multiple submits
| From: | James Duncan | Date: | Fri, 25 Aug 2000 16:05:49 +0000 |
| Subject: | RE: [PHP-WIN] Preventing multiple submits | ||
| References: | 1 | Groups: | php.windows |
| Request: | Send a blank email to php-windows+get-2156@lists.php.net to get a copy of this message | ||
I agree. As a new user I couldn't follow or understand the class :( Maybe I
will just accept the Javascript client side solution as it's only takes a
few lines to disable the submit button once it's been pressed, whereas the
PHP code to achieve the same kind of result seems to be rather complex
(sessions, etc). I really wanted to keep everything server side though
because then I could be 100% sure the user couldn't submit the form more
than once.
Thanks
James
-----Original Message-----
From: Zak Greant [mailto:zak@php.net]
Sent: 25 August 2000 16:41
To: Manuel Lemos
Cc: Pablo Vera; jd@jamesduncan.co.uk; php-windows@lists.php.net
Subject: Re: [PHP-WIN] Preventing multiple submits
At 02:45 AM 8/25/00 -0300, Manuel Lemos wrote:
>[snip]
>The best solution for really preventing more that one submission of the
>same form on the server side is to use create a unique key and pass it in
>the form as hidden field. Store the key in a database (session data area
>is ideal for this). When the first form submission is received, check if
>the key exists in the database, delete it, accept the form. On further
>submissions, check that the key does no longer exist and warn the user
>that the form was already submitted.
The user's session id will serve very nicely as the unique key. That is
why I say that only a counter is needed.
> >I know that JavaScript (or any other Client-Side tool) has its
> >limitations as noted by you before, but with it you will stop the
> >second submission before it is actually sent. The first script will
> >run normally and return its output to the browser, without knowing
> >that the user tried to send the form for a second time. The browser
> >will no cancel that first connection, because it is not posting a
> >second form.
>
>Right, you may want to check this PHP form generation and validation class.
>It has an option to let you specify a text that is used to pop up a
>confirmation box with Javascript that asks the user if he really means to
>submit the form again. The user may confirm or cancel the form submission.
>
>This really works great since most of the times you just want to prevent
>nervous users to submit forms more than once creating inadverted duplicate
>database entries.
>
>http://phpclasses.UpperDesign.com/browse.html/package/1
The class is more mature and feature-rich than any other form
generation/validation script that I have run across (or written for that
matter :) - however, it might be a bit intimidating for a new user!
I suppose that one thing to consider is that javascript is a nice clean way
to stop most re-submissions. PHP can be used along with the js to ensure
robust behavior.
- zak