#! /usr/local/bin/perl # Test script to check for missing form fields in perl # By David Efflandt - efflandt@xnet.com [12/5/95] ### Define Variables $cgiurl = "$ENV{'SCRIPT_NAME'}"; # Auto URL of this script $homeurl = 'index.html'; # home page URL # Array of required (variable, display_name) pairs %required = ( 'realname', 'Your Name', 'username', 'E-mail', 'comments', 'Comments', ); ### DONE # GET form if not POST &make_form unless ($ENV{'REQUEST_METHOD'} eq "POST"); # Get POST input read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Split the name-value pairs @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); # Un-Webify plus signs and %-encoding $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; $value =~ s/<([^>]|\n)*>//g unless ($allow_html = 1); $FORM{$name} = $value; } # Check for Blank Required Fields foreach $var (keys(%required)) { &missing unless ($FORM{$var}); } # Otherwise Save or Email the Form Here &begin_html('Good Test'); print "

Required Fields Have Entries

\n"; print "Following are all fields in random order for this test:
\n"; foreach $var (keys(%FORM)) { print "$var = $FORM{$var}
\n" if $FORM{$var}; } print "\n"; ### Subroutines sub begin_html { local ($title) = @_; print "Content-type: text/html\n\n"; print "$title"; print qq(\n); # bgcolor or background in this tag } sub missing { local($var); &begin_html('Blank Field'); print "

Required Field(s) Blank

\n"; print "One or more required fields appear to be blank. \n"; print "Please fill in below and resubmit.


\n"; print qq(

\n); # Add box(es) for missing field(s) foreach $var (keys(%required)) { unless ($FORM{$var}) { if ($var eq "comments") { print "$required{$var}:
\n"; print qq(
); } else { print qq($required{$var}: ); } print "

\n"; } } # Transfer existing data as hidden fields foreach $var (keys(%FORM)) { if ($FORM{$var}) { print qq(\n); } } print qq(

); print qq(

\n); print qq(Return to My Home Page\n); exit; } sub make_form { &begin_html("Field Test"); print <

Test of Required Fields

Fill in the blanks below to test for required fields (*required fields).
Your Name*:
E-Mail*:
URL:
City: , State: Country:

Comments*:


Return to My Home Page FORM exit; }