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

dvdj has asked for the wisdom of the Perl Monks concerning the following question:

Can somebody please help me!!

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.

Stuart

Visit http://www.truevitality.co.uk to view the contact page and the error messages that are coming up.

The set up on the server is as follows:

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>