royneary: POST vom Perl-Script mit LWP::UserAgent

Beitrag lesen

Hallo zusammen,
ich habe das selfmail-Script für ein Kontaktformular genommen und bin jetzt dabei, die Eingaben im Perlscript zu validieren.
Ein paar Felder des Formulars sind Pflichtfelder, die Fehlermeldung ausgegeben werden soll, wenn sie leer sind habe ich in einer if-Anweisung erstellt. Diese Fehlermeldung (in $error gespeichert) soll jetzt mit der POST-Methode an mein Formular zurückgesendet werden und per php ausgegeben werden.
Leider kommt nichts an. Was mache ich falsch?

Hier ist die modifizierte selfmail.pl:

#!/usr/bin/perl  
use strict;  
# -------> Individuelle Parameter des Skriptes - bitte anpassen!  
# --> SMTP-Programm zum Versenden der Mail:  
my $Sendmail_Prog = "/usr/lib/sendmail";  
# --> Ziel-Mailadresse, an die gesendet werden soll:  
my $mailto = 'mail@mail.de';  
my $mailfrom = 'Kontaktformular <mail@server.de>';  
  
# -------> Modul für CGI-Scripts einbinden:  
use CGI;  
use CGI::Carp qw(fatalsToBrowser);  
open (STDERR, ">&STDOUT");  
use LWP::UserAgent;  
use HTTP::Request::Common;  
  
  
  
  
# -------> Modul für CGI-Scripts zum Einlesen der Formulardaten anwenden:  
my $query = new CGI;  
my @names = $query->param;  
  
# -------> interne Daten aus den erwarteten hidden-Feldern auslesen:  
my $delimiter = $query->param('delimiter');  # ---> Begrenzerzeichen zwischen name und value  
my $returnhtml = $query->param('return');    # ---> URL für Dankeseite  
my $subject = $query->param('subject');      # ---> E-Mail-Subject  
  
# -------> alle Whitespace-Zeichen (Leerzeichen, Tabulator, Newline) in Leerzeichen wandeln  
#             VERHINDERT sonst möglichen MISSBRAUCH des Skripts  
$subject =~ s/\s/ /g;  
  
# -------> Text der E-Mail aus den Formulardaten ermitteln:  
my $mailtext = "";  
my $error = "";  
  
  
foreach(@names) {  
  my $name = $_;  
  my $value = $_;  
  my @values = "";  
  
  @values = $query->param($name);  
  
  
  
  if($name ne "return" && $name ne "subject" && $name ne "delimiter") {  
    foreach $value (@values) {  
	  
	  if(($name eq "Vorname" || $name eq "Nachname" || $name eq "Telefon" || $name eq "Email" || $name eq "Nachricht") && $value eq "") {  
	  
	  $error = $error."Das Feld ".$name." wurde nicht ausgef&uuml;llt.<br>";  
	  
	  }  
	  else {  
	  
      $mailtext = $mailtext.$name;  
      $mailtext = $mailtext.$delimiter;  
      $mailtext = $mailtext.$value."\n";  
	  }  
    }  
  }  
  
  
  
}  
  
if($error ne "") {  
  
my $ua = LWP::UserAgent->new;  
my $response = $ua->request(POST 'http://server.de/index.php?go=form', [error => $error]);  
  
print "Location: http://server.de/index.php?go=form\n\n";  
print $response->as_string;  
  
}  
else {  
# -------> E-Mail versenden:  
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";  
print MAIL "From: $mailfrom\n";  
print MAIL "To: $mailto\n";  
print MAIL "Subject: $subject\n\n";  
print MAIL "$mailtext\n";  
print MAIL "$error\n";  
close(MAIL);  
  
# -------> Dankeseite an Browser senden:  
print "Location: $returnhtml\n\n";  
}  

In der index.php wartet dann folgender php-Code vergeblich auf die POST-Daten:

<?php  
  if($_POST) {  
       $error = $_POST['error'];  
       echo $error;  
      }  
  else {  
      echo "geht nicht!";  
	  }  
  
  
	  
 ?>

Wäre cool, wenn ihr mal rüberkucken könntet.