Hallo,
ich hätte da ein CGI Script, das ständig eine Fehlermeldung produziert. Ich habe schon xxxx Änderung getestet, schaff es aber nicht den Syntax Fehler raus zu bekommen. Wäre cool, wenn da jemand helfen könnte.
Das Scripts ist ein Teil eines größeren Scripts, dass ich genau zu diesen Testzwecken einzeln gestellt habe. Es soll einfach überprüfen, ob in einem Formular alle Pflichtfelder (in meinem Fall „errormessage“) ausgefüllt wurden.
Der Fehler liegt laut Logfiles in der „sub formtest“
syntax error at \CGI-BIN\ERRORMAIL.CGI line 53, near „$check (“
syntax error at \CGI-BIN\ERRORMAIL.CGI line 61, near „}“
Ich vermute aber, dass auch bei if($@missing==-1) { was falsch ist. Diesen Sinn versteh ich eh nicht ganz.
Aufrufen will ich das Script mit &formtest(‚errormessage‘);
#!/usr/bin/perl
$mailprog = /usr/sbin/sendmail;
$webmaster = „[email protected]“;
$subject4 = „Fehlermeldung vom Postkartensystem“;
$errormail_ok = „/home/sites/site139/users/news4free/web/ecards/templates/errormail_ok.html“;
$i=0;
read(STDIN,$buffer,$ENV{‚CONTENT_LENGTH‘});
if ($ENV{‚QUERY_STRING‘})
{$buffer = „$buffer&$ENV{‚QUERY_STRING‘}“;}
@pairs = split(/&/,$buffer);
foreach $pair (@pairs){
($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(„C“,hex($1))/eg;
$VALUE{$name} = $value;
}
if ($VALUE{‚action‘} eq ‚errormail1‘) {
&formtest(‚errormessage‘);
open (MAIL,"| $mailprog -t") || die „Can’t open Mail!“;
print MAIL „To: $webmaster\n“;
print MAIL „From: $VALUE{‚erroremail1‘}\n“;
print MAIL „Subject: $subject4\n\n“;
print MAIL „$VALUE{‚errormessage‘}“;
close(MAIL);
print „Content-Type: text/html\n\n“;
open(TEMPLATE,"$errormail_ok");
&template;
print $template;
exit;
}
sub formtest {
my @missing
foreach my $check (@_)
{
my $test=$VALUE{$check};
$test=~s/\s//g;
unless ($test)
{
push @missing,$check;
}
}
if($@missing==-1) {
print „Content-type: text/html\n\n“;
print „Missing Iormation\n“;
print " Missing Information
\n";
foreach my $fehlt(@missing){
print"- $fehlt
}
print „\n“;
exit;
}
}
sub template {
while (){
$template .= $_;
}
close(TEMPLATE);
$template =~ s/%%%erroremail1%%%/$VALUE{‚erroremail1‘}/g;
$template =~ s/%%%errormessage%%%/$VALUE{‚errormessage‘}/g;
}
Grüße
Pfanni