J
Jo
Hello
I have no perl experience at all but I have what seems to be a fairly
straightforward task to perform.
My client's site has a contact form that is controlled by
form-mail.pl. I would like the form to go to a file called
thankyou.htm that is stored at the root level of the site.
Below is a copy of the script and it would appear that is generates a
simple thank you page itself. Could anyone tell me in idiot-terms
what I need to do to make the script direct visitors to the right
page?
Thanks very much in advance - and sorry for taking up your time with
such a simple question.
Jo
#!/bin/perl
# ------------------------------------------------------------
# Form-mail.pl, by Reuven M. Lerner ([email protected]).
#
# Last updated: March 14, 1994
#
# Form-mail provides a mechanism by which users of a World-
# Wide Web browser may submit comments to the webmasters
# (or anyone else) at a site. It should be compatible with
# any CGI-compatible HTTP server.
#
# Please read the README file that came with this distribution
# for further details.
# ------------------------------------------------------------
# ------------------------------------------------------------
# This package is Copyright 1994 by The Tech.
# Form-mail is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
the
# Free Software Foundation; either version 2, or (at your option) any
# later version.
# Form-mail is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Form-mail; see the file COPYING. If not, write to the
Free
# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# ------------------------------------------------------------
# Define fairly-constants
# This should be set to the username or alias that runs your
# WWW server.
$recipient = '(e-mail address removed)';
# This should be set to the URL of your home page, or wherever
# you wish users to return.
$homepage = 'http://www.XXX.co.uk/';
# This should match the mail program on your system.
$mailprog = '/usr/lib/sendmail';
# Print out a content-type for HTTP/1.0 compatibility
print "Content-type: text/html\n\n";
# Print a title and initial heading
print "<Head><Title>Thank you</Title></Head>";
print "<Body><H1>Thank you</H1>";
# 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;
# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
# $value =~ s/~!/ ~!/g;
# Uncomment for debugging purposes
# print "Setting $name to $value<P>";
$FORM{$name} = $value;
}
# If the comments are blank, then give a "blank form" response
# &blank_response unless $FORM{'comments'};
# Now send mail to $recipient
open (MAIL, "|$mailprog $recipient") || die "Can't open $mailprog!\n";
print MAIL "Reply-to: $FORM{'username'} ($FORM{'realname'})\n";
print MAIL "Subject: WWW comments (Forms submission)\n\n";
print MAIL "$FORM{'username'} ($FORM{'realname'}) sent the
following\n";
print MAIL "Company Name = $FORM{'CompanyName'}\n";
print MAIL "Name of Booker = $FORM{'NameofBooker'}\n";
print MAIL "Address1 = $FORM{'Address1'}\n";
print MAIL "Address2 = $FORM{'Address2'}\n";
print MAIL "Address3 = $FORM{'Address3'}\n";
print MAIL "Address4 = $FORM{'Address4'}\n";
print MAIL "Postal code = $FORM{'Postcode'}\n";
print MAIL "Telephone = $FORM{'Telephone'}\n";
print MAIL "Fax = $FORM{'Fax'}\n";
print MAIL "Email = $FORM{'Email'}\n";
print MAIL "Comments = $FORM{'Comments'}\n";
print MAIL "Course name = $FORM{'CourseName'}\n";
print MAIL "Dates = $FORM{'Dates'}\n";
print MAIL "Cost = $FORM{'Cost'}\n";
print MAIL "Delegate names = $FORM{'DelegateNames'}\n";
print MAIL "Total places = $FORM{'TotalPlaces'}\n";
print MAIL "Total Cost ExVat = $FORM{'TotalCostExVAT'}\n";
print MAIL "VAT = $FORM{'VAT'}\n";
print MAIL "Total = $FORM{'Total'}\n";
print MAIL "Purchase order ref = $FORM{'PO'}\n";
print MAIL "------------------------------------------------------------\n";
print MAIL "$FORM{'comments'}";
print MAIL "\n------------------------------------------------------------\n";
print MAIL "Server protocol: $ENV{'SERVER_PROTOCOL'}\n";
print MAIL "Remote host: $ENV{'REMOTE_HOST'}\n";
print MAIL "Remote IP address: $ENV{'REMOTE_ADDR'}\n";
close (MAIL);
# Make the person feel good for writing to us
print "Thank you for sending your booking information.";
# ------------------------------------------------------------
# subroutine blank_response
sub blank_response
{
print "Your comments appear to be blank, and thus were not sent ";
print "to our webmasters. Please re-enter your comments, or ";
print "return to our <A HREF=\"$homepage\">home page</A>, if you
want.<P>";
exit;
}
I have no perl experience at all but I have what seems to be a fairly
straightforward task to perform.
My client's site has a contact form that is controlled by
form-mail.pl. I would like the form to go to a file called
thankyou.htm that is stored at the root level of the site.
Below is a copy of the script and it would appear that is generates a
simple thank you page itself. Could anyone tell me in idiot-terms
what I need to do to make the script direct visitors to the right
page?
Thanks very much in advance - and sorry for taking up your time with
such a simple question.
Jo
#!/bin/perl
# ------------------------------------------------------------
# Form-mail.pl, by Reuven M. Lerner ([email protected]).
#
# Last updated: March 14, 1994
#
# Form-mail provides a mechanism by which users of a World-
# Wide Web browser may submit comments to the webmasters
# (or anyone else) at a site. It should be compatible with
# any CGI-compatible HTTP server.
#
# Please read the README file that came with this distribution
# for further details.
# ------------------------------------------------------------
# ------------------------------------------------------------
# This package is Copyright 1994 by The Tech.
# Form-mail is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
the
# Free Software Foundation; either version 2, or (at your option) any
# later version.
# Form-mail is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Form-mail; see the file COPYING. If not, write to the
Free
# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# ------------------------------------------------------------
# Define fairly-constants
# This should be set to the username or alias that runs your
# WWW server.
$recipient = '(e-mail address removed)';
# This should be set to the URL of your home page, or wherever
# you wish users to return.
$homepage = 'http://www.XXX.co.uk/';
# This should match the mail program on your system.
$mailprog = '/usr/lib/sendmail';
# Print out a content-type for HTTP/1.0 compatibility
print "Content-type: text/html\n\n";
# Print a title and initial heading
print "<Head><Title>Thank you</Title></Head>";
print "<Body><H1>Thank you</H1>";
# 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;
# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
# $value =~ s/~!/ ~!/g;
# Uncomment for debugging purposes
# print "Setting $name to $value<P>";
$FORM{$name} = $value;
}
# If the comments are blank, then give a "blank form" response
# &blank_response unless $FORM{'comments'};
# Now send mail to $recipient
open (MAIL, "|$mailprog $recipient") || die "Can't open $mailprog!\n";
print MAIL "Reply-to: $FORM{'username'} ($FORM{'realname'})\n";
print MAIL "Subject: WWW comments (Forms submission)\n\n";
print MAIL "$FORM{'username'} ($FORM{'realname'}) sent the
following\n";
print MAIL "Company Name = $FORM{'CompanyName'}\n";
print MAIL "Name of Booker = $FORM{'NameofBooker'}\n";
print MAIL "Address1 = $FORM{'Address1'}\n";
print MAIL "Address2 = $FORM{'Address2'}\n";
print MAIL "Address3 = $FORM{'Address3'}\n";
print MAIL "Address4 = $FORM{'Address4'}\n";
print MAIL "Postal code = $FORM{'Postcode'}\n";
print MAIL "Telephone = $FORM{'Telephone'}\n";
print MAIL "Fax = $FORM{'Fax'}\n";
print MAIL "Email = $FORM{'Email'}\n";
print MAIL "Comments = $FORM{'Comments'}\n";
print MAIL "Course name = $FORM{'CourseName'}\n";
print MAIL "Dates = $FORM{'Dates'}\n";
print MAIL "Cost = $FORM{'Cost'}\n";
print MAIL "Delegate names = $FORM{'DelegateNames'}\n";
print MAIL "Total places = $FORM{'TotalPlaces'}\n";
print MAIL "Total Cost ExVat = $FORM{'TotalCostExVAT'}\n";
print MAIL "VAT = $FORM{'VAT'}\n";
print MAIL "Total = $FORM{'Total'}\n";
print MAIL "Purchase order ref = $FORM{'PO'}\n";
print MAIL "------------------------------------------------------------\n";
print MAIL "$FORM{'comments'}";
print MAIL "\n------------------------------------------------------------\n";
print MAIL "Server protocol: $ENV{'SERVER_PROTOCOL'}\n";
print MAIL "Remote host: $ENV{'REMOTE_HOST'}\n";
print MAIL "Remote IP address: $ENV{'REMOTE_ADDR'}\n";
close (MAIL);
# Make the person feel good for writing to us
print "Thank you for sending your booking information.";
# ------------------------------------------------------------
# subroutine blank_response
sub blank_response
{
print "Your comments appear to be blank, and thus were not sent ";
print "to our webmasters. Please re-enter your comments, or ";
print "return to our <A HREF=\"$homepage\">home page</A>, if you
want.<P>";
exit;
}