Hier mal das gesamte Script,
der erste Versuch geht ja meist in die "Hose":
(soll heissen - das ist mein erstes Script in Perl)
Wenn Jemand mal so nett wäre das Script auf Fehler zu untersuchen:
(vieles sind auch Kommentare - der eigentliche Code ist nicht so viel)
#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
#---------------Variablen werden vereinbart-----------------------------------------------------------------------------------
my $sendmailprog = "/usr/lib/sendmail"; #Das Standard Mail-Prog auf Unix-Rechnern wird aufgerufen.
my %Daten = (); #Der Hash für die Aufnahme der Daten wird vorbereitet
#**************Variablenvereinbarung*ist*zu*ende******************************************************************************
#----------------erste Subroutine zum Aufsplitten der Standardeingabe----------------------------------------------------------
sub readin()
{
my $rohdaten;
my @Datenroh;
my $wertname;
my $value;
my $temporaer;
read(STDIN, $rohdaten, $ENV{'QUERY_STRING'}); #Einlesen der Daten
@Datenroh = split(/&/,$rohdaten); #Aufsplitten des Eingabestrings zu einem Hash
foreach $temporaer (@Datenroh) #foreach geht den Hash @Daten durch und der aktuelle Wert liegt in $Daten (ansonsten in $_)
{
($wertname, $value) = split(/=/, $temporaer); #Aufsplitten der Datenpaare in Wert und Name - temp dient der temporären Aufnahme der Daten
$value =~ tr/+/ /; #Da in URL-encoded Leerzeichen mit + codiert werden, muss + durch den Befehl tr rückgewandelt werden
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g; #Ersetze die Zeichenfolge '<!--' gefolgt von beliebig vielen beliebigen Zeichen oder beliebig vielen Newline-Zeichen durch nichts."
$value =~ s/<([^>]|\n)*>//sg; # Ersetze die Zeichenfolge '<!--' gefolgt von beliebigen Zeichen ausser dem groesser-als-Zeichen gefolgt von der Zeichenfolge '-->' durch nichts
$value =~ s/<!--.*?-->?//sg; # Ersetzt alle HTML Kommentare
$Daten{$wertname} = $value; #Werte sind am Ende vollständig eingelesen
} #For-each ist hier zu ende
#$Daten{Remote IP} = $ENV{'REMOTE_ADDR'};
$Daten{Domain IP} = $ENV{'REMOTE_HOST'}; -> Zeile 48 siehe erste
Antwort
#$Daten{Protokoll} = $ENV{'REMOTE_IDENT'};
#$Daten{IP User} = $ENV{'REMOTE_USER'};
}
#--------------Ende der ersten Subroutine----------------------------------------------------------------------------------------
#---------------Subroutine zum versenden der Mail-----------------------------------------------------
sub send
{
open(Sendmail, "| $sendmailprog"); #Die Datei sentmail wird über das Dateihandle Sendmail angesprochen -> man kann dem Unix-Prog sentmail werte übergeben
select(Sendmail); #Standardein/-ausgabe Kanal wird auf sendmail festgelegt und damit auf sentmail
print "From: $Daten{'vorname'} $Daten{'name'} $Daten{'mail'} \n"; #übergibt sentmail die Variablen für den Absender
print "To: Meine Mailaddi \n"; # Hier wird festgelegt an wen die Mail versendet wird
print "Reply-To: $Daten{'mail'} \n"; #Wohin kann eine Antwort gesendet werden ?
print "Subject: Mail über Webserver versendet \n";
print "$Daten{'eingabe'} \n";
print "Schule Ja/nein: $Daten{'schule'} \n";
print "Alter: $Daten{'alter'} \n";
print "Die Ip des Remote Servers: $Daten{'Remote IP'} \n";
print "Die Domain des Remote Servers: $Daten{'Domain IP'} \n";
print "Protokoll - Infos: $Daten{'Protokoll'} \n";
print "Die IP des Users: $Daten{'IP User'} \n";
close(Sendmail) || &error('schliessen');
select(STDOUT);
}
#------------Ende der zweiten Subroutine--------------------------------------------------------------
#------------Subroutine für danke--------------------------------------------------------------------
sub thanks
{
#print "Content-type: text/html\n\n";
#print "<html><head><title>Danke für ihr Feedback</title>\n";
#print "</head><body bgcolor="#1540B9">\n";
#print "<font color="#FFFFFF"><div align="center">Danke für deine Mitteilung</font></div>"
#print "\n</body></html>";
}
#----------Ende der dritten Subroutine----------------------------------------------------------------------
#°°°°°°°°°°°°°°°°°°°Aufruf derSubtoutinen°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
&readin;
&send;
&thanks;