Bitte Perl-Code prüfen
Maddin
- perl
1 Struppi
Ich habe das folgende Formular erstellt: www.hairlounge-friedberg.de/form.html
Ich habe folgenden Code schon einmal für den ersten Teil des Formulares per Perl-Beispiel Skript erstellt.
Kann der folgende Code stimmen? Wenn "Nein", dann erklärt mir bitte warum?
Hier der Code:
#!/usr/local/bin/perl
$mailer = "/usr/sbin/sendmail -t";
$valist = "";
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
$temp = $buffer;
$temp =~ s/+/ /g;
$temp =~ s/%([0-9|A-F]{2})/pack(C,hex($1))/eg;
foreach (split(/&/,$temp))
{
($NAM, $VAL) = split(/=/, $_);
$DATA{$NAM} = $VAL;
$valist .= "$NAM:$VAL\n";
}
$user_email = $DATA{'Email'};
$user_name = $DATA{'Nachname'};
$user_vname = $DATA{'Vorname'};
$user_strasse = $DATA{'Strasse'};
$user_ort = $DATA{'Ort'};
$user_plz = $DATA{'PLZ'};
$user_telefon = $DATA{'Telefonnummer'};
$user_fax = $DATA{'Faxnummer'};
$user_bemail = $DATA{'Benachrichtigung-Email'};
$user_btelefon = $DATA{'Benachrichtigung-Telefon'};
$user_bfax = $DATA{'Benachrichtigung-Fax'};
$user_bemail = $DATA{'Benachrichtigung-Email'};
open (MAIL, "|$mailer") || die "Can't open $mailprog!\n";
print MAIL "Betreff: $subject\n";
print MAIL "Von: $user_email ($user_name)\n";
print MAIL "An: $sendto\n";
print MAIL "\n";
print MAIL "$valist";
print MAIL "\n";
print MAIL "Remote IP address: $ENV{'REMOTE_ADDR'}\n";
close (MAIL);
print "Content-type:text/html\n\n";
print "<HTML><BODY><TITLE>Vielen Dank!</TITLE>";
print "<FONT SIZE=+2>$response</FONT>";
print "</BODY></HTML>";
Ich bin Perl-Neuling und denke, daß es schon teilweise stimmen müßte!
Ich habe folgenden Code schon einmal für den ersten Teil des Formulares per Perl-Beispiel Skript erstellt.
Du weist was du tust?
Du weißt das es Spammer gibt, die Skript suchen, mit denen sie Spam verschicken könnten?
Und zumal, du hast das erstellt? 1996? und jetzt willst du es einsetzen?
Kann der folgende Code stimmen? Wenn "Nein", dann erklärt mir bitte warum?
stimmen mag sein oder erhälst du eine Fehlermeldung?
#!/usr/local/bin/perl
Du solltest auf jeden Fall die Ausgabe von Warnungen anschalten und in den Errorlogs nach ihnen suchen und beheben.
mailsend.pl
version 961110
copyright 1996 by bo larsson
1996?
Das erklärt einiges
all rights reserved
bugs or feedback to bliss@seagull.net
for information on how to use, visit http://www.seagull.net/bliss/
Die Seite gibt es nicht.
$mailer = "/usr/sbin/sendmail -t";
auch use strict ist empfehlenswert. bist du sicher dass dort sendmail auf deinem Server ist?
Get the input and strip off all unwanted characters
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
Es gibt gute Gründe das CGI Modul dafür zu nutzen. (wobei 1996 gab es das noch nicht)
Send mail to $recipient
open (MAIL, "|$mailer") || die "Can't open $mailprog!\n";
print MAIL "Betreff: $subject\n";
print MAIL "Von: $user_email ($user_name)\n";
print MAIL "An: $sendto\n";
Da keine Header daten wirklich überprüft werden, ist dieses Skript extrem unsicher und kann mißbraucht werden.
Ich bin Perl-Neuling und denke, daß es schon teilweise stimmen müßte!
Teilweise ja, aber als Neuling solltest du dich auch im Umgang mit Perl Modulen vertraut machen, bei jeder Perl Version gibt es davon unzählige. Du findest eine volständige Dokuemntation auf deiner Festplatte entweder als pod Dateien (lesbar mit perldoc in der Konsole oder als html Dateien).
Dort findest du auch Hinweise wie du ein Perlprogramm halbwegs sauber schreibst und Fehler vermeidest.
Ausserdem gibt es bei selfhtml auch eine sehr umfangreicher Perl Doku, wo soweit ich weiß auch ein Mailprogramm vorgestellt wird.
Struppi.