I am looking for Monk guidance for the first time so apologies in advance if I haven't followed protocall with the following submission.
I'm having an addressing issue with a PERL script i'm trying to use on my site. I'm new to learning PERL, so don't have the expertise to write a script that directs the content of a form to my email address and sends an automated reply to the submitter, with a thank you page. So I found a script online and am trying to get it to work on my server. I know I have included alot here! But i do so in the hope that a thorough look can be given, as I am at a real loss as to what I may have configured wrong. Many thanks in advance for any help.
folder /
>>>>>folder mail
>>>>>folder public_ftp
>>>>>folder public_html
>>>>>>>>>>>>>>>>>folder _private
>>>>>>>>>>>>>>>>>folder _vti_bin
>>>>>>>>>>>>>>>>>folder _vti_log
>>>>>>>>>>>>>>>>>folder _vti_cnf
>>>>>>>>>>>>>>>>>folder _vti_pvt
>>>>>>>>>>>>>>>>>folder _vti_txt
>>>>>>>>>>>>>>>>>folder cgi-bin
>>>>>>>>>>>>>>>>>>>>>>>>>>file AlphaMail.pl
>>>>>>>>>>>>>>>>>>>>>>>>>>file AlphaMail.txt
>>>>>>>>>>>>>>>>>folder images
>>>>>file a_fail.htm
>>>>>file a_thanks.htm
>>>>>file contact.htm
The PERL script that I am using is as follows: (My notes in
Bold)
#!/usr/local/bin/perl <strong>(this address has been confirmed as accu
+rate with my server provider)</strong>
#############################################################
# Instructions:
#
# - Use WordPad.exe or any plain text editor to edit
# - Set your path to Perl as needed (first line at top)
# - Set ALL variables appropriately (below, see notes)
# - Take special care with the path to your sendmail (below)
# - Send the script to the server in ascii (I assume that using notepa
+d, saving the file as .pl and ftp the file up to the server, IS sendi
+ng the script in ascii??)
# - Set script permissions - check your doc or ask admin (apparently t
+here aren't any)
# - See a_faq.html for HTML set-ups in alphamail.zip file
# - Required html pages are also provided in alphamail.zip
#
#############################################################
##### SETTABLE VARIABLES ####################################
# URL to go to if there is a problem with form input
$ErrorPage = "http://www.truevitality.co.uk/public_html/a_fail.htm"; (
+this i believe to be the address to the a_fail.htm page that i did)
# URL to go to when form has been successfully submitted
$ThankPage = "http://www.truevitality.co.uk/public_html/a_thanks.htm";
+ (again I believe this address to be correct. I have tried it without
+ the /public_html as well)
# URL to go to if a 'foreign' referer calls the script
$EvilReferer = "http://www.dvdj.co.uk"; (I just used another web addre
+ss that i have for this)
# E-mail address to send intake form to (your address)
# If not using PERL 5, escape the @ thus: \@ instead of @
$YourEmail = 'sackland@blueyonder.co.uk'; (This is my personal email t
+hat i was using to test. The actual email would be info@truevitality.
+co.uk But didn't think this would effect anything)
# Script works only on your server(s) - ('URL1','URL2')
@referers = ('www.truevitality.co.uk','truevitality.co.uk');
# Location of mail program - check your doc or ask admin
$MailProgram = '/usr/sbin/sendmail'; (again this address has been conf
+irmed by my host support team)
# Subject of the e-mail autoreply to the submitter
$Subject = "Thank you for Your Enquiry!";
# Header line in the auto-reply message
$Header = "True Vitality";
# Brief tail message for body of e-mail autoreply
$TailMessage = "If your message requires a reply, then please be assur
+ed that we'll get back to you as soon as possible.";
# Your signature lines the end of the autoreply e-mail
$Signature1 = "Laura Wilenius";
$Signature2 = "www.truevitality.co.uk";
##### END OF SETTABLE VARIABLES ############################
##### MAIN PROGRAM #########################################
# ___ Do not edit below this line __________________________
&CheckReferingURL;
&ReadParse;
$Name = $in{'Name'};
$Email = $in{'Email'};
$Message = $in{'Message'};
&CheckEmailAddressFormat;
&CheckFields;
&GetDate;
&SendSubmission;
&SendAutoReply;
print "Location: $ThankPage\n\n";
exit;
# _________________________________________________________
sub SendSubmission {
open (MAIL,"|$MailProgram -t");
print MAIL "To: $YourEmail\n";
print MAIL "From: $Email\n";
print MAIL "Subject: $Subject\n";
print MAIL "$Date\n\n";
print MAIL "E-Mail Message\n\n";
print MAIL "From: $Name\n";
print MAIL "Email: $Email\n\n";
print MAIL "Message:\n\n";
print MAIL "$Message\n\n";
close (MAIL);
}
# _________________________________________________________
sub SendAutoReply {
open (MAIL,"|$MailProgram -t");
print MAIL "To: $Email\n";
print MAIL "From: $YourEmail\n";
print MAIL "Subject: $Subject\n";
print MAIL "$Header\n";
print MAIL "$Date\n\n";
print MAIL "$Subject\n\n";
print MAIL "You sent the following:\n\n";
print MAIL "==============================\n\n";
print MAIL "Name: $Name\n";
print MAIL "Email: $Email\n\n";
print MAIL "Message:\n\n";
print MAIL "$Message\n\n";
print MAIL "==============================\n\n";
print MAIL "$TailMessage\n\n";
print MAIL "Best regards,\n\n\n";
print MAIL "$Signature1\n";
print MAIL "$Signature2\n\n";
close (MAIL);
}
# _________________________________________________________
sub GetDate {
@days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','
+Saturday');
@months = ('01','02','03','04','05','06','07','08','09','10','11','12'
+);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time
+);
$year = $year+1900;
$Date = "$days[$wday] $months[$mon]/$mday/$year";
}
# _________________________________________________________
sub ReadParse { local (*in) = @_ if @_;
local ($i, $key, $val); if ( $ENV{'REQUEST_METHOD'} eq "GET" )
{$in = $ENV{'QUERY_STRING'};}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{read(STDIN,$in,$ENV{'CONTENT_LENGTH'});}
else {
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\\&/&/g; } @in = split(/&/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
($key, $val) = split(/=/,$in[$i],2);
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val; } return length($in); }
# _________________________________________________________
sub CheckEmailAddressFormat {
if (index($Email, "@") < 1) {&DoEmailError;}
if (index($Email, ".") < 1) {&DoEmailError;}
if (index($Email, " ") > -1) {&DoEmailError;}
}
sub CheckFields {
if (!$Name || $Name eq ' ') {&DoEmailError;}
if (!$Email || $Email eq ' ') {&DoEmailError;}
if (!$Message || $Message eq ' ') {&DoEmailError;}
}
sub DoEmailError {
print "Location: $ErrorPage\n\n";
exit;
}
# _________________________________________________________
sub CheckReferingURL {
if ($ENV{'HTTP_REFERER'}) {
foreach $referer (@referers) {
if ($ENV{'HTTP_REFERER'} =~ /$referer/i) {
$check_referer = '1';
last;
}}}
else {$check_referer = '1';}
if ($check_referer != 1) {
print "Location: $EvilReferer\n\n";
exit;
}}
# _________________________________________________________
exit;
##### End of Script ########################################
The contact page contains the following form code. Please note i'am aware that i have additional fields that are not included in the PERL script which i intend to address once it's working. I hope I'm right in thinking that this wouldn't stop this script from working. But i have renamed the appropriate fields to match the scalars listed in the script.
<form action="/cgi-bin/AlphaMail.pl" method="POST">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td>NAME</td>
<td><input type="text" name="Name" class="formAreas"></td>
</tr>
<tr>
<td>PHONE NUMBER</td>
<td><input type="text" name="telephone" class="formAreas"></td>
</tr>
<tr>
<td>EMAIL</td>
<td><input type="text" name="Email" class="formAreas"></td>
</tr>
<tr>
<td>COMMENT/ENQUIRY</td>
<td><textarea name="Message" cols="15" rows="4" class="formAreas"></te
+xtarea></td>
</tr>
<tr>
<td>PLACE OF EXERCISE</td>
<td><input type="text" name="plcOfExercise" class="formAreas"></td>
</tr>
<tr>
<td>HOW DID YOU HEAR ABOUT TRUE VITALITY</td>
<td><input type="text" name="howDidUHear" class="formAreas"></td>
</tr>
<tr>
<td><br>
<input name="resetVitality" type="reset" class="formAreas"></td>
<td><br>
<input type="submit" class="formAreas"></td>
</tr>
</table>
</form>