sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #44969
Perl script og web formular
Hej.
Jeg har hentet et perl script på nettet.
Scriptet behandler data indtastet via web-interface, og
mailer data til webmaster m. flere.
Problemet opstår når brugeren har udfyldt web-formularen, og
trykker "send" knappen. Så kommer de data der er udfyldt op i browseren.
Det vil jeg ikke have. Jeg vil heller have at der står f.eks. Tak for
bestillingen.
Er der nogen der har et forslag til rettelse i perl-scriptet, eller måske
kender et andet .cgi script ? Jeg bruger Apache. Hilsen Martin.
Her er scriptet :
#!/usr/bin/perl
# Filename: email.pl.cgi
# (c) 1996 William E. Weinman
#
# a generic example of a cgi program that sends
# the response to a form encapsulated in an
# email message to a pre-determined address
#
# your email address goes here
$emailto = "root\@localhost";
$webmaster = "root\@localhost";
$webmastername = "WebMaster";
# Send the MIME header
print "Content-type: text/html\r\n\r\n";
print qq(
<html><head><title>Form Response</title></head>
<body bgcolor="#e0e0e0">);
$ct = $ENV{"CONTENT_TYPE"};
$cl = $ENV{"CONTENT_LENGTH"};
# check the content-type for validity
if($ct ne "application/x-www-form-urlencoded")
{
print "I don't understand content-type: $ct\n";
exit 1;
}
# put the data into a variable
read(STDIN, $qs, $cl);
# split it up into an array by the '&' character
@qs = split(/&/,$qs);
foreach $i (0 .. $#qs)
{
# convert the plus chars to spaces
$qs[$i] =~ s/\+/ /g;
# convert the hex tokens to characters
$qs[$i] =~ s/%(..)/pack("c",hex($1))/ge;
# split into name and value
($name, $value) = split(/=/,$qs[$i],2);
# create the associative element
$qs{$name} = $value;
}
print qq(
<h1>Form Response</h1>
<p>The following information is being forwarded by email:
<p>
Remote Host: <tt>$ENV{"REMOTE_HOST"}</tt><br>
Remote Addr: <tt>$ENV{"REMOTE_ADDR"}</tt><br>
User Agent: <tt>$ENV{"HTTP_USER_AGENT"}</tt><br>
<p>
<strong>Form Responses:</strong>
<p>\n);
foreach $name (keys(%qs))
{ print "$name: <tt>$qs{$name}</tt><br>\n"; }
open(MAIL, "| /usr/lib/sendmail -t -f'$webmaster'");
# These lines must be terminated with CR-LF pairs!
print(MAIL "From: $webmastername <$webmaster>\r\n");
print(MAIL "To: $emailto\r\n");
print(MAIL "Subject: Results of Form\r\n\r\n");
print MAIL qq(
Remote Host: $ENV{"REMOTE_HOST"}
Remote Addr: $ENV{"REMOTE_ADDR"}
User Agent: $ENV{"HTTP_USER_AGENT"}
Form Responses:
);
foreach $name (keys(%qs))
{ print MAIL "$name: $qs{$name}\n"; }
close(MAIL);
Follow ups