Maddin: Bitte Perl-Code prüfen

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

mailsend.pl

version 961110

copyright 1996 by bo larsson

all rights reserved

bugs or feedback to bliss@seagull.net

for information on how to use, visit http://www.seagull.net/bliss/

$mailer = "/usr/sbin/sendmail -t";
$valist = "";

Get the input and strip off all unwanted characters

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
$temp = $buffer;
$temp =~ s/+/ /g;
$temp =~ s/%([0-9|A-F]{2})/pack(C,hex($1))/eg;

Store the matching name and value pairs

foreach (split(/&/,$temp))
{
 ($NAM, $VAL) = split(/=/, $_);
 $DATA{$NAM} = $VAL;
 $valist .= "$NAM:$VAL\n";
}

Grab necessary variables

$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'};

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";
print MAIL "\n";
print MAIL "$valist";
print MAIL "\n";
print MAIL "Remote IP address: $ENV{'REMOTE_ADDR'}\n";
close (MAIL);

Print the response

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!

  1. 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.