Errica
10-03-2008, 07:04 AM
Here's my existing code for the form...
fp.cgi
#!/usr/bin/perl
use POSIX qw(strftime);
use CGI;
use CGI::Carp qw(fatalsToBrowser);
$Recipient = "info\@mydomain.com";
$From = "auto-reply\@mydomain.com";
$Subject = "mydomain.com - Web Request";
$Web_Address = "http://www.mydomain.com";
$Return_Link = "http://www.mydomain.com/thanks.php";
$Send_Reply = "1";
$Reply_Template = "fp.txt";
$Log_Forms = "1";
$Mail_Program = "/usr/sbin/sendmail -t";
@fields = ('Name','Company','Email','Phone','Request');
@friendly_fields = ('Full Name','Company Name','Email Address','Phone Number','Client Request');
my $cgi = new CGI;
my %FORM = $cgi->Vars;
my $date = strftime("%B %d, %Y", localtime);
my $time = strftime("%I:%M:%S %p", localtime);
print "Content-type: text/html\n\n";
open(MAIL,"|$Mail_Program") || &noprogram;
print MAIL "To: $Recipient\n";
if (! $FORM{'Email'}) {
print MAIL "From: $Recipient\n";
} else {
print MAIL "From: $FORM{'Email'}\n";
}
if (! $FORM{'subject'}) {
print MAIL "Subject: $Subject\n\n";
} else {
print MAIL "Subject: $FORM{'subject'}\n\n";
}
print MAIL "Submitted at $time on $date...\n\n";
for $idx (0..$#fields ) {
$field_data = $FORM{$fields[$idx]};
$friendly_field = $friendly_fields[$idx];
if ($field_data) {
if ($fields[$idx] eq "main") {
$field_data =~ s/QnE/n/g;
print MAIL "$friendly_field: $field_data\n\n";
} else {
if($fields[$idx] eq "Service") {
$field_data = join(" | ", split("\0", $field_data));
}
print MAIL "$friendly_field: $field_data\n\n";
}
}
}
close(MAIL);
if ($Send_Reply eq "1") {
open(REPLY,"$Reply_Template");
@reply = <REPLY>;
close(REPLY);
foreach $line(@reply) {
$line =~ s/QnE/n/g;
$fiction .= $line;
}
open(MAIL,"|$Mail_Program") || &noprogram;
print MAIL "To: $FORM{'Email'}\n";
print MAIL "From: $From\n";
print MAIL "$fiction\n\n";
print MAIL "\n\n\nNote: This message was not sent unsolicited. It was sent through a form located at $Web_Address. If you believe this message was received on error, please disregard it.";
close(MAIL);
}
if ($Log_Forms eq "1") {
if ($FORM{'Email'}) {
open(LOG,">>submitted/$date.txt");
print LOG "Submitted at $time on $date...\n\n";
foreach $field(@fields) {
if ($FORM{$field}) {
if ($field eq "main") {
$FORM{'main'} =~ s/QnE/n/g;
print LOG "$field = $FORM{'main'}\n";
} else {
print LOG "<p>$field = $FORM{$field}\n";
}
}
}
print LOG "\n";
print LOG "---------------------------\n\n";
close(LOG);
}
}
print qq~
<HTML>
<HEAD>
<META HTTP-EQUIV=Refresh CONTENT=0;URL="$Return_Link">
</HEAD>
<BODY></BODY>
</HTML>
~;
exit;
sub noprogram {
print qq~
Sendmail program failed to open!<br>
Message NOT sent.<br>
Please contact the webmaster about this problem.
~;
exit;
}
form:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<script type="text/JavaScript">
<!--
// Check for a valid email address
var testresults
function checkemail(){
var str=document.formCheck.Email.value
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
testresults=true
else{
alert("Please input a valid email address.")
testresults=false
}
return (testresults)
}
function checkit(){
if (document.layers||document.getElementById||document.all)
return checkemail()
else
return true
}
// Check for required fields
function Require(obForm,szFields)
{
var fields = szFields.split(",")
var szMissing= new Array();
for (x=0;x<fields.length;x++) {
if (obForm.elements[fields[x]].value.length==0) {
szMissing[szMissing.length]=new String(fields[x]);
}
}
if (szMissing.length) {
alert("The"+((szMissing.length>1)?"s ":" ")+szMissing.join(",")+" field must be completed.");
return false
}
if (!document.formCheck.Budget.selectedIndex) {
alert("Please choose your budget.");
return false
}
return true;
}
// Check for multiple submissions
function submitonce(theform){
//if IE 4+ or NS 6+
if (document.all||document.getElementById){
//screen thru every element in the form, and hunt down "submit" and "reset"
for (i=0;i<theform.length;i++){
var tempobj=theform.elements[i]
if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset")
//disable em
tempobj.disabled=true
}
}
}
// Focus on first field
onload = function()
{
document.forms[0].elements[0].focus();
}
-->
</script>
</head>
<body>
<table class="indent">
<form action="fp.cgi" method="post" name="formCheck" onSubmit="return (Require(this,'Name') && submitonce(this))">
<tr>
<td class="formtext">Email</td>
<td><input name="Email" type="text" size="32" maxlength="150"></td>
</tr>
<tr>
<td class="formtext">Name</td>
<td><input name="Name" type="text" size="32" maxlength="150"></td>
</tr>
<tr>
<td class="formtext3">Company</td>
<td><input name="Company" type="text" size="32" maxlength="150"></td>
</tr>
<tr>
<td class="formtext3">Phone</td>
<td><input name="Phone" type="text" size="32" maxlength="150"></td>
</tr>
<tr>
<td colspan="2" class="formtext4"><strong>How can we help?</strong><br>
<textarea name="Request" rows="5" cols="32"></textarea>
</td>
</tr>
<tr>
<td><input class="send" type="submit" value="Send Form" onclick="return checkit()"></td>
<td><input class="reset" type="reset" value="Reset Form" onclick="return confirm('Please confirm or cancel the reset.')"></td>
</tr>
</form>
</table>
</body>
</html>
fp.cgi
#!/usr/bin/perl
use POSIX qw(strftime);
use CGI;
use CGI::Carp qw(fatalsToBrowser);
$Recipient = "info\@mydomain.com";
$From = "auto-reply\@mydomain.com";
$Subject = "mydomain.com - Web Request";
$Web_Address = "http://www.mydomain.com";
$Return_Link = "http://www.mydomain.com/thanks.php";
$Send_Reply = "1";
$Reply_Template = "fp.txt";
$Log_Forms = "1";
$Mail_Program = "/usr/sbin/sendmail -t";
@fields = ('Name','Company','Email','Phone','Request');
@friendly_fields = ('Full Name','Company Name','Email Address','Phone Number','Client Request');
my $cgi = new CGI;
my %FORM = $cgi->Vars;
my $date = strftime("%B %d, %Y", localtime);
my $time = strftime("%I:%M:%S %p", localtime);
print "Content-type: text/html\n\n";
open(MAIL,"|$Mail_Program") || &noprogram;
print MAIL "To: $Recipient\n";
if (! $FORM{'Email'}) {
print MAIL "From: $Recipient\n";
} else {
print MAIL "From: $FORM{'Email'}\n";
}
if (! $FORM{'subject'}) {
print MAIL "Subject: $Subject\n\n";
} else {
print MAIL "Subject: $FORM{'subject'}\n\n";
}
print MAIL "Submitted at $time on $date...\n\n";
for $idx (0..$#fields ) {
$field_data = $FORM{$fields[$idx]};
$friendly_field = $friendly_fields[$idx];
if ($field_data) {
if ($fields[$idx] eq "main") {
$field_data =~ s/QnE/n/g;
print MAIL "$friendly_field: $field_data\n\n";
} else {
if($fields[$idx] eq "Service") {
$field_data = join(" | ", split("\0", $field_data));
}
print MAIL "$friendly_field: $field_data\n\n";
}
}
}
close(MAIL);
if ($Send_Reply eq "1") {
open(REPLY,"$Reply_Template");
@reply = <REPLY>;
close(REPLY);
foreach $line(@reply) {
$line =~ s/QnE/n/g;
$fiction .= $line;
}
open(MAIL,"|$Mail_Program") || &noprogram;
print MAIL "To: $FORM{'Email'}\n";
print MAIL "From: $From\n";
print MAIL "$fiction\n\n";
print MAIL "\n\n\nNote: This message was not sent unsolicited. It was sent through a form located at $Web_Address. If you believe this message was received on error, please disregard it.";
close(MAIL);
}
if ($Log_Forms eq "1") {
if ($FORM{'Email'}) {
open(LOG,">>submitted/$date.txt");
print LOG "Submitted at $time on $date...\n\n";
foreach $field(@fields) {
if ($FORM{$field}) {
if ($field eq "main") {
$FORM{'main'} =~ s/QnE/n/g;
print LOG "$field = $FORM{'main'}\n";
} else {
print LOG "<p>$field = $FORM{$field}\n";
}
}
}
print LOG "\n";
print LOG "---------------------------\n\n";
close(LOG);
}
}
print qq~
<HTML>
<HEAD>
<META HTTP-EQUIV=Refresh CONTENT=0;URL="$Return_Link">
</HEAD>
<BODY></BODY>
</HTML>
~;
exit;
sub noprogram {
print qq~
Sendmail program failed to open!<br>
Message NOT sent.<br>
Please contact the webmaster about this problem.
~;
exit;
}
form:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<script type="text/JavaScript">
<!--
// Check for a valid email address
var testresults
function checkemail(){
var str=document.formCheck.Email.value
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
testresults=true
else{
alert("Please input a valid email address.")
testresults=false
}
return (testresults)
}
function checkit(){
if (document.layers||document.getElementById||document.all)
return checkemail()
else
return true
}
// Check for required fields
function Require(obForm,szFields)
{
var fields = szFields.split(",")
var szMissing= new Array();
for (x=0;x<fields.length;x++) {
if (obForm.elements[fields[x]].value.length==0) {
szMissing[szMissing.length]=new String(fields[x]);
}
}
if (szMissing.length) {
alert("The"+((szMissing.length>1)?"s ":" ")+szMissing.join(",")+" field must be completed.");
return false
}
if (!document.formCheck.Budget.selectedIndex) {
alert("Please choose your budget.");
return false
}
return true;
}
// Check for multiple submissions
function submitonce(theform){
//if IE 4+ or NS 6+
if (document.all||document.getElementById){
//screen thru every element in the form, and hunt down "submit" and "reset"
for (i=0;i<theform.length;i++){
var tempobj=theform.elements[i]
if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset")
//disable em
tempobj.disabled=true
}
}
}
// Focus on first field
onload = function()
{
document.forms[0].elements[0].focus();
}
-->
</script>
</head>
<body>
<table class="indent">
<form action="fp.cgi" method="post" name="formCheck" onSubmit="return (Require(this,'Name') && submitonce(this))">
<tr>
<td class="formtext">Email</td>
<td><input name="Email" type="text" size="32" maxlength="150"></td>
</tr>
<tr>
<td class="formtext">Name</td>
<td><input name="Name" type="text" size="32" maxlength="150"></td>
</tr>
<tr>
<td class="formtext3">Company</td>
<td><input name="Company" type="text" size="32" maxlength="150"></td>
</tr>
<tr>
<td class="formtext3">Phone</td>
<td><input name="Phone" type="text" size="32" maxlength="150"></td>
</tr>
<tr>
<td colspan="2" class="formtext4"><strong>How can we help?</strong><br>
<textarea name="Request" rows="5" cols="32"></textarea>
</td>
</tr>
<tr>
<td><input class="send" type="submit" value="Send Form" onclick="return checkit()"></td>
<td><input class="reset" type="reset" value="Reset Form" onclick="return confirm('Please confirm or cancel the reset.')"></td>
</tr>
</form>
</table>
</body>
</html>