So, like many of you, I've got a signup system in place for bringing on new
customers.

My signup script is reasonably straightforward.  I use CGI::Validate to make
my parameters pass muster (along with a little judicious JavaScript on the
signup form), Apache::Session::Oracle to maintain state between the multiple
pages of the signup, CGI::FastTemplate to print a pretty success page, and
DBI to create the account records at successful creation.

At one time it was straight CGI but I've since updated it for mod_perl.

Anyway, my only problem is that I can't seem to prevent duplicate signups,
e.g. reloading the last page to create multiple accounts.

This is my dupe detection code:

if (my (%post) = cookie('Signup')) {
    local $^W = 0;
    my $match = 0;
    foreach (qw/ email url password / ) {
        $match++ if param($_) and $post{$_} eq param($_)
    }
    if ($match == 3) {
        # I tried this first, but some browsers are stupid.
        # print header(-status=>'204 No Content');
        print header(-status=>'304 Not Modified');
        exit;
    }
}

Naturally, I set the corresponding cookie in the Header of the "Thank you
for signing up" template output.

But it doesn't work.  I still get duplicate accounts, and I'm at a loss as
to how to attack this problem.  (this is the 3rd or 4th approach I've
tried).

Suggestions?

TIA!

L8r,
Rob

#!/usr/bin/perl -w
use Disclaimer qw/:standard/;


Reply via email to