Halihallo nochmals
print "Content-type: text/html\n\n";
hier wäre:
print "Content-Type: text/html\015\012\015\012";
etwas sicherer.
my $cgi = new CGI; # OOP!!!
use CGI;
my $name = $cgi->param("vuname");
my $mitteilung = $cgi->param("mitteilung");
my $passwort = $cgi->param("pw");
my $passwort2 = $cgi->param("pwst");
my $email = $cgi->param("email");
Also: Die Passwörter sind in den Variablen $passwort und $passwort2 gespeichert! - Warum unten mit "if ($pw != $pwst)"???
if ($pw != $pwst)
Hier muss
if ($passwort ne $passwort2)
stehen!
if ($action eq "start") {&start;}
Das ist wohl etwas redundant. So lange die Variable (s. oben) immer auf 'start' steht, wird eh immer &start aufgerufen. Also kannst du hier auch nur
&start;
schreiben, statt "if ($action eq 'start') {&start;} ";
sub start {
open(INDEX,"$datfile");
Aha! - Hier steckt noch ein Fehler:
das muss
open(INDEX, "<$datfile");
heissen. '>>' ist zum Anhängen von Daten, '>' ist um die Datei zu überschreiben und '<' ist zum Datei lesen.
Hier nochmals der verbesserte Code:
#!/usr/bin/perl
$datfile="mitteilung.txt";
print "Content-type: text/html\n\n";
####### Formulardaten einlesen ###################
my $cgi = new CGI; # OOP!!!
use CGI;
my $name = $cgi->param("vuname");
my $mitteilung = $cgi->param("mitteilung");
my $passwort = $cgi->param("pw");
my $passwort2 = $cgi->param("pwst");
my $email = $cgi->param("email");
if ($passwort != $passwort2) {
print "<html><head><title>FEHLER</title></head>\n";
print "<body bgcolor="navy" text="red" link="yellow" alink="lime" vlink="yellow"\n";
print "<h1><center>Es ist ein Fehler aufgetreten</center></h1>\n";
print "<br><br>\n";
print "Ihre Passwörter $passwort und $passwort2 stimmen nicht überein! <br>\n";
print "<br><br><a href="javascript:history.back()">Zurück</a></body></html>\n";
};
print "<html><head><title>Vielen Dank für ihre Eingaben</title></head>\n";
print "<body bgcolor="navy" text="white" link="yellow" alink="lime" vlink="yellow"\n";
print "<h1><center>Vielen Dank für ihre Eingaben</center></h1><br>\n";
print "<br><br>\n";
print "Ihr Name = $name <br>\n";
print "Ihre Mitteilung = $mitteilung <br>\n";
print "Ihr Passwort = $passwort <br>\n";
print "Ihre E-Mail adresse = $email <br>\n";
print "<br><br><a href="javascript:history.back()">Zurück</a></body></html>\n";
&start; # Vielleicht solltest du das nach den nächsten drei Zeilen
# hinsetzen, dann wird der vom Benutzer eingegebene
# Datensatz auch noch mit ausgegeben.
open(DATA,">>$datfile");
print DATA "$name§$mitteilung§$passwort§$passwort2§\n";
close(DATA);
sub start {
open(INDEX, "<$datfile");
@index = <INDEX>;
close(INDEX);
foreach (@index) {
$dzeil =$_;
chomp($dzeil);
($name,$mitteilung,$passwort,$passwort2) = split(/§/,$dzeil);
print "Ihr Name = $name\n";
print "Ihre Mitteilung = $mitteilung\n";
print "Ihr Passwort = $passwort\n";
print "Ihre Passwortbestätigung = $passwort2\n";
exit;
}
}
So, versuchs jetzt nochmals. Ich hoffe, dass dies nun funktioniert
Viele Grüsse
Philipp
PS: Wenn du nicht weisst, warum ich irgend etwas bemängle oder verbessere, dann frag! - Wir sind hier um Fragen zu beantworten und wenn du perl lernen willst, musst du fragen. Wir helfen dir gerne; aber wir dienen nicht gerne, wenn's darum geht ein Programm einfach zu verbessern nur weil man selber nicht einmal bereit ist, perl zu lernen. Dies ist eine allgemeine Anmerkung! - Also nur persönlich nehmen, wenn's auch zutrifft!