Thread Script zum E-Mail Formular verschicken
(7 answers)
Opened by peterpan at 2010-08-03 10:52
Hallo,
ich habe folgendes Perl-Script mit der Dateiendung ".cgi" auf meinen Webserver hochgeladen und executable gemacht ("chmod u+x"). Der Pfad "/usr/local/bin/perl" ist nach Rücksprache mit dem Provider korrekt. 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 #!/usr/local/bin/perl # -------> Individuelle Parameter des Skriptes - bitte anpassen! # --> SMTP-Programm zum Versenden der Mail: $Sendmail_Prog = "/usr/lib/sendmail"; # --> Ziel-Mailadresse, an die gesendet werden soll: $mailto = 'adresse@provider.de'; # -------> Modul für CGI-Scripts einbinden: use CGI; # -------> Modul für CGI-Scripts zum Einlesen der Formulardaten anwenden: $query = new CGI; @names = $query->param; # -------> interne Daten aus den erwarteten hidden-Feldern auslesen: $delimiter = $query->param('delimiter'); # ---> Begrenzerzeichen zwischen name und value $returnhtml = $query->param('return'); # ---> URL für Dankeseite $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: $mailtext = ""; foreach(@names) { $name = $_; @values = ""; @values = $query->param($name); if($name ne "return" && $name ne "subject" && $name ne "delimiter") { foreach $value (@values) { $mailtext = $mailtext.$name; $mailtext = $mailtext.$delimiter; $mailtext = $mailtext.$value."\n"; } } } # -------> E-Mail versenden: open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n"; print MAIL "To: $mailto\n"; print MAIL "Subject: $subject\n\n"; print MAIL "$mailtext\n"; close(MAIL); # -------> Dankeseite an Browser senden: print "Location: $returnhtml\n\n"; Bei dem folgenden HTML-Code handelt es sich um ein Formular, das durch Click auf "Senden" das oben gepostete Script (verschicken.cgi) ausführt. Code: (dl
)
1 <html> Das Verschicken funktioniert insoweit, dass bei mir eine E-Mail mit folgendem Inhalt ankommt: Quote Nachdem der Benutzer in dem HTML-Formular auf "Senden" klickt, wird nicht etwa die URL http://www.adresse.de/seite.html aufgerufen, sondern die URL http://www.adresse.de/verschicken.cgi, wobei der Inhalt im Browser der folgende ist: Quote Es wäre super, wenn mir jemand einen Hinweis geben kann, wieso nach Click auf "Senden" die falsche URL aufgerufen wird, bzw. wieso der Inhalt der E-Mail nicht so strukturiert ist, wie im Perl-Script spezifiziert. Danke!! PS: Meine richtige URL und E-Mail-Adresse wurde mit www.adresse.de bzw. mit adresse@provider.de ersetzt. Last edited: 2010-08-03 11:02:11 +0200 (CEST) |