Hallo zusemmen.
Es scheint nicht zu klappen.
Das Script sieht so aus :
#!/usr/bin/perl
# AlienForm2 - Released 23 Mai, 1998.
# Copyright 1997, 1998 Jon Hedley -
jon@cgi.tj # Alle Rechte Vorbehalten.
# Verkaufen Sie dieses Script nicht ohne die schriftliche
# Genehmigung des Autors!
# Achten Sie darauf, das Script im ASCII-Modus auf Ihren
# Server zu laden!
# Arbeite hart und sei gut zu Deiner Mutter.
# Setzen Sie diesen Wert zum erforderlichen MIME-Type
# Die Voreinstellung ist ok und sollte so kein Probleme machen
$content_type = "Content-Type: text/html\n\n";
# Setzen Sie diesen Wert zum Verzeichnis Ihrer Vorlagen.
# Die Dateien, die Sie in der HTML-Form angegeben haben sollten sich in
# Diesem Verzeichnis befinden.
$base_path = '/cgi-bin/';
# Geben Sie hier den Pfad zu Sendmail an.
$mail_cmd = '/usr/sbin/sendmail -t';
# Hier können Sie angeben, von welcher Domain aus auf dieses Script
# zugegriffen werden darf. Alle angegebenen Domains müssen zwischen
# zwei ' - Zeichen stehen und mit einem Komma voneinander getrennt
# sein.
@Referers = ('
http://www.boeboe.de','www.boeckstiegel.net'); ## Ändern Sie hier unterhalb nichts, wenn Sei nicht wissen, was Sie tun! ##
## AB HIER MUSS NICHTS GEÄNDERT WERDEN!! ##
$error_loop = 0;
$browser_out = 0;
if ($ENV{'REQUEST_METHOD'} eq 'GET' and not $ENV{'QUERY_STRING'})
{
$ENV{'OUT_TITLE'} = "AlienForm2 Release Edition";
$ENV{'OUT_MSG'} = qq|Die letzte Version von diesem Script und der Readme sind erhältlich
auf <a href="
http://www.cgi.tj">Jon's CGI-Scape.|;
@msg = (<DATA>);
@msg = ParseText(@msg);
BrowserOut(@msg);
exit(0);
}
&CheckRef;
&ParseForm;
if (@missing_values or @bad_emails or @only_digits or @only_words) { Error('evil values') }
foreach $key (keys %FORM)
{
if ($key =~ /^_send_email/)
{
@lines = ReadFile('Email Template',$FORM{$key});
@lines = ParseText(@lines);
SendMail(@lines);
}
elsif ($key =~ /^_out_file/)
{
@lines = ReadFile('Log File',$FORM{$key});
@lines = ParseText(@lines);
LogFile('LogFile Template',@lines);
}
elsif ($key =~ /^_browser_out/ and $browser_out < 2)
{
$browser_out++;
@lines = ReadFile('Browser Template',$FORM{$key});
@lines = ParseText(@lines);
BrowserOut(@lines);
}
elsif ($key =~ /^_redirect/ and $browser_out < 2)
{
$browser_out++;
print "Location: $FORM{$key}\n\n";
}
}
unless ($browser_out)
{
@msg = (<DATA>);
$ENV{'OUT_TITLE'} = "Formular erfolgreich versandt";
$ENV{'OUT_MSG'} = "Ihr Formular wurde erfolgreich versandt. Vielen Dank.";
@msg = ParseText(@msg);
BrowserOut(@msg);
}
exit(0);
sub BrowserOut
{ print "$content_type@_\n" }
sub CheckRef
{
my ($valid_referer, @terms);
if ((@Referers) and ($ENV{'HTTP_REFERER'}))
{
foreach $referer (@Referers)
{
if ($ENV{'HTTP_REFERER'} =~ m|http.*?://$referer|i)
{
$valid_referer++;
last;
}
}
}
else {$valid_referer++;}
unless ($valid_referer)
{
@terms = split(/\//,$ENV{'HTTP_REFERER'});
Error
(
'Bad Referer',
"'$ENV{'HTTP_REFERER'}' ist nicht autorisiert, dieses Script zu nutzen. Wollen Sie es dennoch nutzen
müssen Sie '$terms[2]' in Ihre Referer-Liste aufnehmen."
);
}
}
sub Error
{
++$error_loop;
my $title = shift @_;
my $msg = shift @_;
my @error;
if ($title eq 'evil values')
{
my $val;
if (@missing_values)
{
$msg = qq|<p>Die folgenden Felder sind erforderlich und müssen für ein ordnungsgemäßes Absenden ausgefüllt werden:</p>\n<ol type="i">\n|;
foreach $val (@missing_values) { $msg .= "<li>$val\n" }
$msg .= "</ol>\n";
}
if (@bad_emails)
{
$msg .= qq|<p>Die folgenden Felder müssen mit einer gültigen eMail-Adresse ausgefüllt werden:</p>\n<ol type="i">\n|;
foreach $val (@bad_emails) { $msg .= "<li>$val\n" }
$msg .= "</ol>\n";
}
if (@only_digits)
{
$msg .= qq|<p>Die folgenden Felder müssen mit Ziffern (0-9) ausgefüllt werden und dürfen keine Buchstaben enthalten:</p>\n<ol type="i">\n|;
foreach $val (@only_digits) { $msg .= "<li>$val\n" }
$msg .= "</ol>\n";
}
if (@only_words)
{
$msg .= qq|<p>Die folgenden Felder müssen mit Buchstaben (A-Z, 0-9) ausgefüllt werden:</p>\n<ol type="i">\n|;
foreach $val (@only_words) { $msg .= "<li>$val\n" }
$msg .= "</ol>\n";
}
$title = 'FEHLER- Fehlerhafte Eingaben';
$msg .= qq|<p>Bitte gehen Sie zurück und füllen Sie die Felder ordnungsgemäß aus.</p>\n|;
}
if ($FORM{'_error_url'}) { print "Location: $FORM{'_error_url'}\n\n" }
elsif ($FORM{'_error_path'} and $error_loop < 2)
{
$ENV{'OUT_TITLE'} = $title;
$ENV{'OUT_MSG'} = $msg;
@error = ReadFile('Error Template',$FORM{'_error_path'});
@error = ParseText(@error);
BrowserOut(@error);
}
else
{
@error = (<DATA>);
$ENV{'OUT_TITLE'} = $title;
$ENV{'OUT_MSG'} = $msg;
@error = ParseText(@error);
BrowserOut(@error);
}
exit(0);
}
sub LogFile
{
my $msg = shift @_;
my $file = shift @_;
$file = $base_path . $file;
open(FILE,">>$file") or Error('Datenzugriffsfehler',"Ein Fehler beim Zugriff auf folgende Dateien ist aufgetreten: $msg ($file): $!");
flock(FILE,2) or Error('Datei LOCK FEHLER',"Ein Fehler ist beim Locken aufgetreten: $msg ($file): $!.");
print FILE @_;
close(FILE) or Error('FEHLER BEIM SCHLIESSEN',"Beim schliessen folgender Datei ist ein FEHLER aufgetreten: $msg ($file): $!.");
}
sub ReadFile
{
my $msg = shift @_;
my $file = shift @_;
my @lines;
$file = $base_path . $file;
open(FILE, "$file") or Error('DATEIZUGRIFFSFEHLER',"Fehler beim öffnen von folgender Datei the $msg ($file): $!.");
flock(FILE,2) or Error('Datei LOCK FEHLER',"Ein Fehler ist beim Locken aufgetreten: $msg ($file): $!.");
@lines = (<FILE>);
close(FILE) or Error('FEHLER BEIM SCHLIESSEN',"Beim schliessen folgender Datei ist ein FEHLER aufgetreten: $msg ($file): $!.");
return @lines;
}
sub ParseForm
{
my ($key, $prefs, $buffer);
if ($ENV{'REQUEST_METHOD'} eq 'GET')
{ @pairs = split(/&/, $ENV{'QUERY_STRING'}) }
elsif ($ENV{'REQUEST_METHOD'} eq 'POST')
{
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer)
}
else {Error('Falsche oder unbekannte Anforderungs-Methode',
"Die Anforderungs-Methode muss GET oder POST entsprechen. Prüfen Sie bitte Ihr HTML.")}
foreach $pair (@pairs)
{
local($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.)*?-->//mg;
$FORM{$name} = $value;
if ($name =~ /_/ and $name !~ /^_/)
{
($prefs, $key) = split /_/, $name, 2;
if ($prefs =~ /r/i and not $value) { push @missing_values, $key }
if ($prefs =~ /e/i and $value and
(($value =~
/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/) or
($value !~
/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/))) { push @bad_emails, $key }
if ($prefs =~ /d/i and $value and $value =~ /\D/) { push @only_digits, $key }
if ($prefs =~ /w/i and $value and $value =~ /\W/) { push @only_words, $key }
if ($prefs =~ /s/i and $value) { $value =~ s/^(\s)*//;
$value =~ s/(\s)*$//;
$FORM{$name} = $value; }
}
}
}
sub ParseText
{
my ($line, $key, $value, $sub);
foreach $line (@_)
{
while (($key => $value) = each %FORM)
{ $line =~ s/\[$key\]/$value/ig }
while (($key => $value) = each %ENV)
{ $line =~ s/\[\%$key\]/$value/ig }
$line =~ s/\[[^<](.)*?[^>]\]//g;
}
foreach $line (@_)
{
while ($line =~ /\[<((.)*?)>\]/)
{
$sub = $1;
$sub =~ s/[^\d\+\*\/\-%\.x<>\(\)]//g;
$sub = eval $sub;
$line =~ s/\[<(.)*?>\]/$sub/
}
}
return @_;
}
sub SendMail
{
open(MAIL,"|$mail_cmd") or Error('SENDMAIL-FEHLER',"Fehler beim öffnen des Mailers: ($mail_cmd): $!.");
print MAIL @_;
close(MAIL) or Error('Fehler beim Senden der Mail',"Fehler beim Senden der Mail: $?. Checken Sie bitte die Header der eMail.");
}
__END__
<html>
<head>
<title>[%OUT_TITLE]</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<div align="center"><center>
<table border="2" cellpadding="0" cellspacing="0" bgcolor="#FFD26B" bordercolor="#699A69"
width="500">
<tr>
<td><h2 align="center">[%OUT_TITLE]</h2>
<p align="center">[%OUT_MSG]</p></td>
</tr>
</table>
<p><br><p>
<table border="2" cellpadding="0" cellspacing="0" bgcolor="#FFD26B" bordercolor="#699A69"
width="500">
<tr>
<td><h2 align="center"><a href="
http://www.cgi.tj/...lt;/a></h2> <p align="center">Copyright 1997 - 1998 <a
href="mailto:jon@cgi.tj">Jon Hedley</a>.<br>
All Rights Reserved.<br><br>
<center> Ins Deutsche übersetzt von <a
href="mailto:dan@tentacle.de">Dan Sepeur</a> URL:<a href="
http://www.tag4tag.com">Tag -4- Tag </a></td>
</tr>
</table>
</center></div>
</body>
</html>
Wenn ich auf senden gehe, kommt zwar keine Fehlermeldung, aber
es kommen auch keine Mails an.
Die Seite ist zwar noch voll im Aufbau, aber ich habe alles zum Testen einfach mal hierhin hochgeladen :
http://www.boeboe.de Es geht um das Formular in dem Unterpunkt "Kontakt".
Nach dem Senden kommt auch nicht die Meldung, die ich in den zum Script gehörenden .txt konfiguriert habe, sondern eine Meldung die
in dem Script eingebunden ist.
Die Textdateien zum Script befinden sich in dem selben Verzeichnis, wie das Script selbst ( ist das überhaupt richtig ? ) ...
Wer sich das Script im Rohzustand ansehen möchte : Es ist das von Mathias Knerr weiter oden genannte.
Danke für die Hilfe !!!
boeboe