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;
}
\w\d ↩︎