Dieter: Perl: Sub wird trotz If-Befehl nicht aufgerufen?

Beitrag lesen

Hallo,

in dem folgendem script wird die sub feedback und die Unterroutinen oops und oops1 trotz If-Aussage (if ($form{'action'} eq 'feedback') { &feedback; }
nicht aufgerufe. Kann jemand sagen was ich hier falsch gemacht habe?
Gruß
Dieter

#!/usr/bin/perl5

$adminemail = 'myserver.de';

##################################
$basepath='myserver.com';

#######################################################

$mailserver = '/usr/sbin/sendmail';
if ($form{'action'} eq 'feedback') { &feedback; }
#######################################################

print "Content-Type: text/html\n\n";
#########################################################
&get_form_data; # parse arguments from post
@ARGV = split(/\*&/, $ENV{'QUERY_STRING'});
$ARGV[0] =~ s/\W//g;
if ($form{'action'} eq 'feedback') { &feedback; }
print <<"EOF";
<html>
<head>
<title>Feedback</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" background="http://images/bg.jpg">
<form method="POST" input type="hidden" name='action' value='feedback' action="$ENV{'SCRIPT_NAME'}">

<p align="center"><font color="#80000" size="5">Feedback</font></p>
  <p align="center"><img src="http://images/logo.gif" width="120" height="120"></p>
  <p align="center"><TR>
    <TD VALIGN=TOP>  </TD>
    <TD>
<div align="center">
    <table width="70%" border="0">
      <tr>
        <td>Ihr Name:</td>
            <td>
              <input type="radio" name="Frau" >
              Frau
              <input type="radio" name="Mann" >
              Herr
              <input type="text" name="name" size="35" maxlength="35" >
        </td>
      </tr>
      <tr>
        <td>Ihre EMail-Adresse:</td>
        <td>
          <input type="text" name="email" size="35" maxlength="35" >
          (optional) </td>
      </tr>
      <tr>
        <td>Ihre Telefonnummer: </td>
        <td>
          <input type="text" name="telefon" size="35" maxlength="35" >
          (optional) </td>
      </tr>
      <tr>
        <td>Bitte rufen Sie mich zurück</td>
            <td>
              <input type="checkbox" name="tJa" >
              Ja, zwischen
              <input type="text" name="zeit" size="20">
              Uhr
              <input type="checkbox" name="tNein" >
              Nein </td>
      </tr>
      <tr>
            <td>Bitte antworten Sie mir per EMail</td>
            <td>
              <input type="checkbox" name="eJa">
              Ja
              <input type="checkbox" name="eNein" >
              Nein </td>
      </tr>
    </table>
    <br>
  </div>
  <center>Ihre Wünsche, Fragen, Anregungen:</center>
  <p align="center">
    <textarea name="text" cols="50" rows="6" ></textarea>
  </p>
  <p align="center"> </p>
  <p align="center">
    <input type="submit" name="Submit" value="Abschicken">
    <input type="reset" name="delete" value="Inhalt löschen">
  </p>
</form>
</body>
</html>
EOF
if ($form{'action'} eq 'feedback') { &feedback; }
sub feedback {
&oops('Email') unless ($form{'email'});    
&oops('Text') unless ($form{'Text'});
if( $email !~ /[1]+[.-]?[\w\d]*@[\w\d-.]+$/ ){
&oops1
}
#$form{'EMAIL'} = $email;
&sendemail($adminemail, 'Feedback', $form{'EMAIL'}, $mailserver, "$form{'text'}, $form{'email'}, $form{'eJa'},$form{'eNein'}, $form{'tJa'},  $form{'zeit'}, $form{'tNein'}, $form{'Frau'}, $form{'Herr'}, $form{'telefon'}");
print "<CENTER><B>Vielen Dank, $form{'Name'}, Ihr Feedback ist bei uns angekommen! </B>Clicken Sie bitte <a href='$ENV{'SCRIPT_NAME'}'>Hier</a> um zurückzukehren</CENTER>"
}
sub oops {
print "Bitte geben Sie in jedem Fall Ihre EMail-Adresse und einen Text ein. Drücken Sie den Back-Button Ihres Browsers um zurückzukehren";
}

sub oops1 {
print "Die EMail-Adresse enthält einen Fehler. Drücken Sie den Back-Button Ihres Browsers um zurückzukehren";
}

##############################################
sub sendemail {
$TO=$_[0];  @TO=split('\0',$TO);
$SUBJECT=$_[1];
$REPLYTO=$_[2];
$REMOTE = $_[3];
$THEMESSAGE = $_[4];

open(S, "$REMOTE -t");  

print S "To: $TO[0]\n";  
print S "From: <SMTPMAIL>\n";  
print S "Subject: $SUBJECT\n";  
print S "Reply-To: $REPLYTO\n\n";  

# Print the body  
print S "$THEMESSAGE\n";  
print S "\n";  
print S ".\n";  
close (S);  

}

Sub: Get Form Data

This gets data from a post.

sub get_form_data {
$buffer = "";
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs=split(/&/,$buffer);
foreach $pair (@pairs)
{
  @a = split(/=/,$pair);
  $name=$a[0];
  $value=$a[1];
  $value =~ s/+/ /g;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/~!/ ~!/g;
  $value =~ s/[\n\r]/ /sg;  #remove \n
  $value =~ s/[]//g;  #remove []
  push (@data,$name);
  push (@data, $value);
}
%form=@data;
%form;
}


  1. \w\d ↩︎