Also die Variable müsste gesetzt sein.
Ich bin langsam am verzweifeln.
Ich poste hier mal unverschämt den ganzen code, vielleicht kann mal jemand ausprobieren ob das bei ihm läuft.
#!c:\apachefriends\xampp\xampp\perl\bin\perl.exe
use strict;
use CGI qw( :cgi );
use Template ();
#_______________________________________________________
#________START HAUPTPROGRAMM_____________________________
#variablen für das Template verzeichnis und unsere eigene URI unter dem wir vom client aufgerufen werden
our $templDir= "C:/templates";
our $action = $ENV{"SCRIPT_NAME"};
our $q=new CGI();
#--->VARIABLEN
our $login="";
our $pwd="";
our $pwdRepeat="";
our $email="";
our $firstname="";
our $lastname="";
our $gender="";
our $street="";
our $zip="";
our $city="";
our $bankName="";
our $bankCode="";
our $accountNum="";
#<---
#http header senden
our @headers=("Content-Type: text/html" );
our $headersSent=0;
printHeaders();
my $formName = $q->param( "formName" );
unless ($formName)
{
printLoginForm();
exit (0);
}
if ($formName eq "loginForm")
{
unless (checkLoginForm())
{
printLoginForm();
exit (0);
}
printPersForm();
exit(0);
}
elsif ($formName eq "persForm")
{
unless (checkPersForm())
{
printPersForm();
exit(0);
}
printPmtForm();
exit(0);
}
elsif ($formName eq "pmtForm")
{
unless (checkPmtForm())
{
printPmtForm();
exit(0);
}
printReviewForm();
exit(0);
}
elsif ($formName eq "ReviewForm") #Speicherung der Daten und Ausgabe
{
printAnswer();
exit(0);
}
else
{
print("$formName ist ein falsches Formular");
exit(1);
}
exit(0);
#_______________________________________________________
#________ENDE HAUPTPROGRAMM_____________________________
#_______________________________________________________
#SUBFUNKTIONEN:
#*******************************************************
sub checkLoginForm
{
#alle Formulardaten einlesen
#um undef werte auszuschliessen werden sie mit einen leeren string belegt wenn sie einen false wert besitzen
$login = $q->param( "login" ) || "";
$pwd = $q->param( "pwd" ) || "";
$pwdRepeat = $q->param( "pwdRepeat" ) || "";
$email = $q->param( "email" ) || "";
#Keines der Felder darf leer sein
unless ($login and $pwd and $pwdRepeat and $email)
{
return undef;
}
#Kennwort wiederholung überprüfen:
if($pwdRepeat ne $pwd)
{
return undef;
}
return 1;
}
#*******************************************************
sub checkPersForm
{
$firstname = $q->param( "firstname" ) || "";
$lastname = $q->param( "lastname" ) || "";
$gender = $q->param( "gender" ) || "";
$street = $q->param( "street" ) || "";
$zip = $q->param( "zip" ) || "";
$city = $q->param( "city" ) || "";
unless($firstname and $lastname and $gender and $street and $zip and $city)
{
return undef;
}
return 1;
}
#*******************************************************
sub checkPmtForm
{
$bankName = $q->param( "bankName" ) || "";
$bankCode = $q->param( "bankCode" ) || "";
$accountNum = $q->param( "accountNum" ) || "";
unless($bankName and $bankCode and $accountNum)
{
return undef;
}
}
#*******************************************************
sub addHeader
{
#Funktion mit welcher ein oder mehrere http Header in die zu sendenden Liste aufgenommen werden
#die Liste der Header steht in der globalen Variable @headers
#keine leeren header aufnehmen
unless (@_) {return;}
push( @headers,@_); #push: fügt ein oder mehrere Elemente an ein array an
}
#*******************************************************
sub printHeaders
{
#Funktion die alle http header an den Client schickt; muss vor der ausgabe von daten aufgerufen werden
#mit der Variablen $headersSent wird verhindert das die header mehrfach gesendet werden
if( $headersSent)
{
return;
}
foreach my $header (@headers)
{
print ("$header\n");
}
print ("\n");
$headersSent=1;
}
#*******************************************************
sub printLoginForm
{
#Funktion für das Formular der Logindaten
my $fname="wfLoginForm.html";
my $path="$templDir/$fname";
my $templ = new Template( $path, "r" );
unless( $templ )
{
return undef;
}
my %subs =(); #Hash deklarieren
# $action wird im Hauptprogramm gesetzt
#Hash mit keys und werten setzen
$subs{"action"} = $action;
$subs{"login"} = $q->param( "login" ) || "";
$subs{"pwd"} = $q->param( "pwd" ) || "";
$subs{"pwdRepeat"} = $q->param( "pwdRepeat" ) || "";
$subs{"email"} = $q->param( "email" ) || "";
print( $templ->substitute( %subs )); #referenz auf das subs-hash
}
#*******************************************************
sub printPersForm
{
#Funktion für die Ausgabe der pers. Daten
my $fname="wfPersForm.html";
my $path="$templDir/$fname";
my $templ=new Template($path,"r");
unless ($templ)
{
return undef;
}
my %subs=(); #hash deklarieren
$subs{"action"}=$action;
$subs{"firstname"}=$q->param("firstname")||"";
$subs{"lastname"}=$q->param("lastname")||"";
$subs{"gender"}=$q->param("gender")||"";
$subs{"femaleChecked"}="checked";
if($gender eq "m")
{
$subs{"maleChar"}="r";
$subs{"maleChecked"}="checked";
$subs{"femaleChecked"}="";
$subs{"title"}="Herr";
}
$subs{"street"}=$q->param("street")||"";
$subs{"zip"}=$q->param("zip")||"";
$subs{"city"}=$q->param("city")||"";
print($templ->substitute(%subs));
}
#*******************************************************
#Funtkion für die Ausgabe des Formulars der Zahlungsmethode
sub printPmtForm
{
my $fname="wfPmtForm.html";
my $path="$templDir/$fname";
my $templ=new Template($path,"r");
unless ($templ)
{
return undef;
}
my %subs=(); #hash deklarieren
$subs{"action"}=$action;
$subs{"bankName"}=$q->param("bankName")||"";
$subs{"bankCode"}=$q->param("bankCode")||"";
$subs{"accountNum"}=$q->param("accountNum")||"";
print($templ->substitute(%subs));
}
#*******************************************************
#Funtkion für den Review Step:
sub printReviewForm
{
my $fname="wfReview.html";
my $path="$templDir/$fname";
my $templ=new Template($path,"r");
unless ($templ)
{
return undef;
}
my %subs=(); #hash deklarieren
$subs{"action"}=$action;
$subs{"login"}=$q->param("login")||"";
$subs{"pwd"}=$q->param("pwd")||"";
$subs{"pwdRepeat"}=$q->param("pwdRepeat")||"";
$subs{"email"}=$q->param("email")||"";
$subs{"firstname"}=$q->param("firstname")||"";
$subs{"lastname"}=$q->param("lastname")||"";
$subs{"gender"}=$q->param("gender")||"";
$subs{"street"}=$q->param("street")||"";
$subs{"zip"}=$q->param("zip")||"";
$subs{"city"}=$q->param("city")||"";
$subs{"accountNum"}=$q->param("accountNum")||"";
print($templ->substitute(%subs));
}
#*******************************************************
#Funtkion für die Ausgabe der Antwort nach dem Commit step:
sub printAnswer
{
my $fname="wfCommit.html";
my $path="$templDir/$fname";
my $templ=new Template($path,"r");
unless ($templ)
{
return undef;
}
my %subs=(); #hash deklarieren
my $gender=$q->param("gender");
$subs{"maleChar"}=($gender eq "m")?"r":"";
$subs{"title"}=($gender eq "m")?"Herr":"Frau";
$subs{"lastname"}=$q->param("lastname")||"";
$subs{"login"}=$q->param("login")||"";
print($templ->substitute(%subs));
}
Bin für jeden Ratschlag dankbar.
Langsam glaube ich nimmer das es an der $ENV{SCRIPT_NAME} liegt.