Thread Formular Reset bzw. Site-Wechsel, ohne Button
(16 answers)
Opened by Olli at 2011-05-27 18:39
So könntest du das machen (als Anschaungsbeispiel, weil ich deinen Code nicht kenne), wenn nach dem erfolgreichen Senden etwas angezeigt werden soll.
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 #!/usr/bin/perl use strict; use warnings; use CGI; my $q = CGI->new; my $firmen_mail = 'info@example.org'; # eigene Mailadresse my $name = $q->param('name') || ''; my $email = $q->param('mail') || ''; my $anfrage = $q->param('anfrage') || ''; my $mail_sent = 0; # Flag, ob Mail gesendet wurde # ab hier Parameter auf Gültigkeit prüfen my $fehlermeldung = ''; my $parameter_fehler = 0; # # ungetester Regex! # besser Mailadressen mit Modul Email::Valid testen! if ( $email !~ /[a-zA-Z0-9][a-zA-Z0-9_.-]+\@[a-zA-Z0-9_.-]+(\.[a-zA-Z]+)/ ) { $parameter_fehler = 1; $fehlermeldung = 'E-Mail falsch eingegeben'; } # # sendmail und Parameter my $sendmail = "> mailout.txt"; # Ausgabe an Datei nur für lokales Testen!!!! #my $sendmail = "| /usr/lib/sendmail -t -oi"; if ( !$parameter_fehler && $name && $email && $anfrage ) { # Formular wurde abgesendet if ( open( my $sm, $sendmail ) ) { # sensmail öffnen $email =~ s/[\r\n]//g; print $sm <<MAIL; # Mail-Header und -Body senden From: $name <$email> To: Informationszentrale <$firmen_mail> Subject: Ihre Anfrage $anfrage MAIL close($sm) && $mail_sent++; # sendmail schließen und Flag für gesendet setzen $q->delete_all(); # alle CGI-Parameter löschen } } print $q->header; print $q->start_html( -title => 'Anfrage' ); if ( not $mail_sent ) { print $q->p( "Fehleingabe: ", $q->b( $fehlermeldung ) ) if length $fehlermeldung; print $q->start_form, $q->p( "Name : ", $q->textfield( -name => 'name' ) ), $q->p( "E-Mail : ", $q->textfield( -name => 'mail' ) ), $q->p( "Anfrage: ", $q->textarea( -name => 'anfrage' ) ), $q->submit, $q->end_form; } else { print $q->p( [ "Danke für Ihre Anfrage.", "Wir werden Sie demnächst kontaktieren." ] ); } print $q->end_html; //EDIT: Eigentlich müsstest du wie in Zeile 23 (der Code ungetestet!) noch erweitert prüfen, ob alle Daten der Parameter gültig sind und dann eine Fehlermeldung später anzeigen. Aber das kannst du ja noch einfügen. Last edited: 2011-05-30 12:28:48 +0200 (CEST) |