#!/usr/bin/perl &get_form_data(); &check_required_fields; sub check_required_fields { if($FORM{'name'} eq "") { $blank_name = 1; } if($FORM{'address1'} eq "") { $blank_address1 = 1; } if($FORM{'city'} eq "") { $blank_city = 1; } if($FORM{'state'} eq "") { $blank_state = 1; } if($FORM{'country'} eq "") { $blank_country = 1; } if($FORM{'telephone'} eq "") { $blank_telephone = 1; } if($FORM{'email'} eq "") { $blank_email = 1; } } # end sub check_required_fields if($blank_name || $blank_address1 || $blank_city || $blank_state || $blank_country || $blank_telephone || $blank_email) { &print_error_page; exit; } else { &send_email; &print_return_page; &log_data; exit; } sub get_form_data { # Get the 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; $FORM{$name} = $value; } } sub send_email { $to = "maegan\@siena.edu"; open(MAIL, "|/usr/sbin/sendmail -t $to") || die ("can't open sendmail"); print MAIL "From: $FORM{'email'}\n"; print MAIL "To: $to\n"; print MAIL "Subject: Form submission\n\n"; # print out the form results print MAIL "Name: $FORM{'name'}\n"; print MAIL "Company: $FORM{'company'}\n"; print MAIL "Address: $FORM{'address1'}\n"; print MAIL "City: $FORM{'city'}\n"; print MAIL "State: $FORM{'state'}\n"; print MAIL "Country: $FORM{'country'}\n"; print MAIL "Telephone: $FORM{'telephone'}\n"; print MAIL "Fax: $FORM{'fax'}\n"; print MAIL "E-mail: $FORM{'email'}\n"; print MAIL "Services interested in: $FORM{'services'}\n"; print MAIL "Notified when pages updated: $FORM{'notify'}\n"; print MAIL "Comments: $FORM{'comments'}\n"; close(MAIL); } sub print_error_page { print "Content-type: text/html\n\n"; print "\n
\n\n"; print "\n"; print "Sorry, but you did not fill in all required fields. Please use your browser's back button\n"; print "to return to the form and fill in the following fields:\n\n"; print "
\n";
print "\n";
if($blank_name)
{
print "Name\n";
print "
\n";
}
if($blank_address1)
{
print "Address\n";
print "
\n";
}
if($blank_city)
{
print "City\n";
print "
\n";
}
if($blank_state)
{
print "State\n";
print "
\n";
}
if($blank_country)
{
print "Country\n";
print "
\n";
}
if($blank_telephone)
{
print "Telephone\n";
print "
\n";
}
if($blank_email)
{
print "E-mail Address\n";
print "
\n";
}
# close out the page
print "\n\n";
print "\n";
print "\n";
} # end sub print_error_page
sub print_return_page
{
print "Content-type: text/html\n\n";
print "\n\n";
print "\n";
print "Thank you\n";
print "
\n\n";
print "The following information has been e-mailed to: ";
print $to;
print "\n
\n";
print "Name: $FORM{'name'}
";
print "Company: $FORM{'company'}
";
print "Address: $FORM{'address1'}
";
print "City: $FORM{'city'}
";
print "State: $FORM{'state'}
";
print "Country: $FORM{'country'}
";
print "Telephone: $FORM{'telephone'}
";
print "Fax: $FORM{'fax'}
";
print "E-mail: $FORM{'email'}
";
print "Services interested in: $FORM{'services'}
";
print "Notified when pages updated: $FORM{'notify'}
";
print "Comments: $FORM{'comments'}
";
print "
";
print "\n
";
}
sub log_data
{
$lock_ex = 2;
$lock_un = 8;
open(OUT, ">>logfile.txt");
flock(OUT, "$lock_ex");
print OUT $FORM{'name'};
print OUT ",";
print OUT $FORM{'company'};
print OUT ",";
print OUT $FORM{'address1'};
print OUT ",";
print OUT $FORM{'city'};
print OUT ",";
print OUT $FORM{'state'};
print OUT ",";
print OUT $FORM{'country'};
print OUT ",";
print OUT $FORM{'telephone'};
print OUT ",";
print OUT $FORM{'fax'};
print OUT ",";
print OUT $FORM{'email'};
print OUT ",";
print OUT $FORM{'services'};
print OUT ",";
print OUT $FORM{'notify'};
print OUT ",";
print OUT $FORM{'comments'};
print OUT "\n";
close(OUT);
flock(OUT, "$lock_un");
}