http://qs321.pair.com?node_id=871977


in reply to Battling form spam

A few random observations after having a cursory view on the download of your script (Form.cgi from Form.zip) which does "not work properly":

The original script is not your own, but you tried to adapt some form script "flying around" in the internet. (Which is not a bad thing as is, but just to mention because it was not obvious from your post.)

I didn't bother to long for the original of the script, but try to deduce your changes from what you wrote here.

You introduced the lines 631,632 (at beginning of sub send_email):

# Only send email if spam trapping field is empty # if ($Form{'hiddenfield'} eq '') {

and line 907,908:

# closing bracket for spam if statement # }

Now coming from here:

There is no such variable as %Form declared or filled anywhere, so it will be empty (referencing that stray variable is no error, since use strict; is not used in the script.)

The closing bracket for spam if statement is not placed at the end of the original sub send_email but a good while further below enclosing some additional subs.

The last 2 mentioned observations are errors IMHO. To correct that, I propose the following:

$Form{'hiddenfield'} should read $query->param('hiddenfield').

Move the closing bracket for spam if statement to approx. line 830, where the original sub send_email ended. (more precisely: place it in front of the } which precedes sub add_error.)


This is all untested guesswork, but I hope it may lead you closer to what you wanted.