cgicorner.ch (https://www.cgicorner.ch/cgi-bin/YaBB/YaBB.cgi)
Hilfe >> CGI/Perl allgemein >> Formmailer einrichten
(Thema begonnen von: hazet am 31. Dezember 2008 um 16:20)

Titel: Formmailer einrichten
Beitrag von hazet am 31. Dezember 2008 um 16:20
Hallo,
bin neu auf diesem Forum und versuche, den Formmailer auf meinen Websites einzurichten um SPAM'er zu verbannen. Habe zwei Websites, eine bei einem ISP und die andere auf meinem privaten SUSE LINUX 11 Server.
Ich habe versucht, erst mal die Sache beim ISP (Genotec) zu installieren und zu testen. Zu diesem Zweck habe ich ein Directory "cgi_bin" mit Unterdir "formmailer" erstellt. Danach habe ich die 2 Files formmailer.cgi, seccode.jpg geladen und ein leeres config.pl File erstellt. Die Berechtigungen habe ich gemäss Anweisung auf 755 bzw. 644 eingestellt.
Nun zu meinem Problem:
- wenn ich den script formmailer.cgi?action=admin aus dem Browser aufrufe, erhalte ich die Fehlermeldung:
"Template nicht gefunden
Bei der Verarbeitung ist ein Fehler aufgetreten: es wurde kein Mail-Template definiert oder das Template konnte nicht gefunden werden. . ."

Welche Files fehlen? Ich dachte, dass mit dem "Admin Mode" die Templates erstellt werden. Was mache ich falsch?

En guete Rutsch in ein erfolgreiches und gesundes 2009 wünscht
Hans Z.

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 31. Dezember 2008 um 16:42
Hallo Hazet

Die Webseite bei Genotec läuft glaube ich auf einem Windows-Server, oder? Beim IIS habe ich schon einmal komisches verhalten festgestellt, dass das aktuelle-Verzeichis nicht das Scriptverzeichnis ist (wie man es erwarten könnte), sondern das CGI-BIN Verzeichnis oder gar der Document-Root.

Somit ist "./config.pl" also nicht im Scriptverzeichnis.

Versuch mal folgendes:
- erstelle eine config.pl im cgi-bin Ordner (nicht formmailer!)
- wird der Adminbereich angezeigt? Falls ja: config.pl wieder löschen und in der formmailer.cgi bei my $configFile="config.pl"; ein my $configFile="formmailer/config.pl"; eintragen. Funktioniert es dann? Falls nicht:
- erstelle eine config.pl im Haupt-Ordner (nicht cgi-bin oder formmailer!)
- wird der Adminbereich angezeigt? Falls ja: config.pl wieder löschen und in der formmailer.cgi bei my $configFile="config.pl"; ein my $configFile="cgi-bin/formmailer/config.pl"; eintragen. Funktioniert es dann?

Wenn's das ist, müsstest du sehen was alles nicht funktioniert und ggf. nochmals Bescheid geben. Die Template-Pfade müssten dann auch mit Verzeichnisangabe erfolgen, möglich, dass aber irgendetwas noch nicht funktioniert. Bevor wir aber nicht wissen, ob es wirklich die Verzeichnisse sind, macht es nicht viel Sinn, dass ich da den ganzen Code durchsuche.

Mit deinem privaten Linux müsste es eigentlich problemlos funktionieren. Gib mir doch Bescheid, ob es an den Pfaden lag.

Gruss
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 31. Dezember 2008 um 17:15
Hallo Jürg
Danke für die umgehende Antwort.
Ich habe das config.pl file schrittweise nach oben kopiert und siehe da: Nachdem es im root directory plaziert war, bin ich im Admin mode angekommen. Doch eine Wundertüte von "billing Gates".
Für dieses Jahr mache ich jetzt Schluss.
Gruss Hans Z.  :D

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 31. Dezember 2008 um 17:18
Hallo Hans

Danke für die Antwort. Du kannst dir nicht vorstellen, wie lange ich das erste Mal bei jemanden gesucht habe, bis ich diese Eigenheit entdeckt habe (via E-Mail Korrespondenz schreibt man da ein paar Mails hin und her, bis man dem auf die Schliche kommt - mit Zugriff auf den Server wäre es evtl. einfacher gewesen). Das vergisst man nicht mehr so schnell... :)

Gruss und "guete Rutsch"
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 02. Januar 2009 um 10:10
Hallo Jürg
Erst mal mein besten Wünsche für ein gutes und gesundes 2009!

Ich habe nun auf beiden Servern (WINDOWS bei GENOTEC und auf meinem SUSE LINUX) die cgi-bin installiert und kann bei beiden Installationen den admin mode starten.
Damit ich nicht zu viele Fehlversuche mache, wäre ich Dir für einen Vorgehenstip für diesen Fall sehr dankbar:
- Ich verwende identische Formulare in drei versch. Sprachen (d,f,e) und möchte diese wegen wiederholtem SPAM Email für die Verwendung mit Deinem Formmailer umsetzen. Wie macht man dies am rationellsten?
- wenn ich die Beschreibung richtig verstanden habe, kann dies nur im "admin"-mode gemacht werden . . .
- Das aktuelle Formular findest Du hier: http://www.bastide-immo.com/Formulare/AnfrageFormular.html

Besten Dank und Gruss
Hans Z.

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 02. Januar 2009 um 14:26
Hallo Hans

Grundsätzlich bietet FormMailer drei Betriebsmodes:
- Templaes fix in der formmailer.cgi eingetragen (das heisst 3 Sprachen = 3 formmailer.cgi auf dem Server, nicht optimal)
- Templates mit versteckten Feldern im Formular
- Adminbereich

Sowohl in der Variante 2 als auch 3 mit Adminbereich kannst du mit einer FormMailer Installation drei Sprachen abdecken. Der Adminbereich ist also nicht zwingend notwendig. Vorteil des Adminbereichs ist es, dass du das Mailtemplate (und somit z.B. die Zieladresse) webbasiert anpassen kannst, sonst musst du die Datei mit FTP herunterladen, anpassen und wieder hochladen. Nachteil ist noch ein Passwort und tendenziell ist der Adminbereich eher etwas komplizierter (je nachdem, wie gewohnt man mit dem Umgang mit solchen Adminseiten ist). Die folgenden Erklärungen beziehen sich jetzt auf den Adminbereich, lassen sich aber auch relativ einfach für das andere Script verwenden.

Was du wissen musst ist zuerst einmal, ob das MAIL auch dreisprachig sein soll (wenn der Absender eine Kopie erhält). Falls ja, musst du natürlich drei Mailtemplates in drei Sprachen haben, falls nicht, reicht ein Mailtemplate aus und es reichen drei Formulare. Beides funktioniert, musst es nur im Voraus wissen.

Dann ist das Vorgehen so: erstelle mal ein Mail-Template, das so aussieht:

From: [email protected]
To: [email protected]
Subject: Test-Formular

Anrede: <!--titre-->


(Absender- und Zieladresse anpassen) Speichere das im selben Verzeichnis, in dem nun auch die config.pl ist (z.B. anfrage.template oder anfragedeutsch.template wenn du 3 MAIL-Templates brauchst). Gehe in den Adminbereich und erstelle ein neues Template "anfragedeutsch". Als Ziel-URL für korrekte resp. fehlerhafte Daten trägst du die URLs aus _DankePage und _FehlerPage ein. Template wäre anfrage.template oder anfragedeutsch.template, Rest lässt du leer.

Nun passt du die AnfrageFormular.html, löschst alle versteckten Felder im Block, der mit

<input type="hidden" name="_Host" value="localhost">

beginnt und fügst stattdessen diese Zeile ein:

<input type="hidden" name="id" value="anfragedeutsch">

Das wäre für den ersten Schritt mal alles: das Template ruft nun die ID anfragedeutsch auf: dort hast du die Ziel-URLs sowie das Mailtemplate definiert. Nun müsste das Formular funktionieren und du müsstest ein Mail bekommen, in der die gewählte Anrede ausgegeben wird. Unter Windows musst du in der formmailer.cgi wohl noch den Pfad zu sendmail anpassen, wie der genau lautet weiss ich nicht:

my $sendmail="/usr/sbin/sendmail";

Wenn du mal soweit bist und ein Mail mit einem Feld hast kannst du dich an die anderen Felder machen: einfach Name des Feldes im Template erwähnen,
<input type="text" name="meinfeld">
ist also im Mail-Template dann
<!--meinfeld-->

Bei dieser Gelegenheit kannst du auch allen Pflichtfeldern noch ein NNUL_ vorne ran stellen, dein Titre wird also
<input type="text" name="NNUL_Titre">
und im Mailtemplate
<!--NNUL_Titre-->
Dann prüft FormMailer auch, ob das Feld gefüllt ist (wenn jemand Javascript deaktiviert hat).

Wenn dann dies alles läuft, kannst du dich optional noch an den Spam-Schutz mittels Validierungscode machen.

Bei den anderen Sprachen erstellst du im Adminbereich wieder eine neue ID und passt Fehler und Zielurl an. Wenn das Mailtemplate auch dreisprachig ist auch diesen Namen anpassen, sonst einfach gleich lassen. Dann kopierst du das deutsche Formular, passt das hidden-Feld "id" an und änderst die Feldbeschriftungen und speicherst es unter neuem Namen ab. Fertig.

Ich hoffe, das hilft dir weiter. Mein genereller Tipp: versuch zuerst ein Mail mit 1 Feld zum laufen zu kriegen, dann kennst du die Template-Pfade, Pfad zu sendmail etc. Die restlichen Felder sind dann reine Fleissarbeit, bevor aber nicht klar ist, dass alles funktioniert (und z.B. Sendmail für Windows installiert ist) wäre es dämlich, zu viel reine Fleissarbeit zu investieren und dann schlussendlich doch keinen Erfolg zu haben.

Gruss
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 02. Januar 2009 um 14:58
Hallo Jürg
Ganz herzlichen Dank für Deine ausführliche Antwort. Ich habe mittlerweile ein Testformular gemacht und habe den Securecode auf dem LINUX server erfolgreich getestet. Was allerdings noch nicht su tut wie's soll, ist Mails verschicken. Ich habe sendmail auf dem LINUX Server gefunden und im frommailer.cgi den Pfad entsprechend angepasst. Was mich jedoch ein wenig "stutzig" macht, ist, dass "webinfo.cgi" unter "sendmail" einen leeren Eintrag zeigt . . .
Was ich auch noch gerne wissen möchte ist, ob's eine Möglichkeit gibt, dem Website Besucher anzugeben, welches Feld im Formular fehlerhaft war; einfach die Fehlerseite ohne weitere Angabe zum Fehler zurückzugeben ist wenig hilfreich. Ist es möglich, vor dem Aufruf des Formmailer scripts mit eigenen (bereits existierenden) Validierungsscripts (chkFormular) die Feldinhalte zu überprüfen? Der Aufruf für den Formmailer würde dann so aussehen:
<form onsubmit="return chkFormular()" action="../cgi-bin/formmailer.cgi" method="post"> <input type="hidden" name="id" value="myid">
Sollte dies möglich sein, entfielen die weiteren Validierungen im Formmailer, nicht wahr?
Im Uebrigen erwartet mich nun ja ein Menge "Fleissarbeit", aber wenn damit die ärgerlichen SPAM unterbunden werden können, tamps mieux.
Gruss Hans Z. :)

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 02. Januar 2009 um 15:48
Hallo Hans

Pfad zu sendmail: ist meistens /usr/sbin/sendmail, manchmal noch /usr/lib/sendmail. Webinfo kann den Pfad leider nicht in allen Fällen zuverlässig erkennen (wäre dies der Fall würde ich den Pfad ja autmatisch ermitteln). Auf der Shell müsste "which sendmail" eigentlich den korrekten Pfad zurückliefern.

Fehler-Details: die Einbindung von Java-Script ist weiterhin möglich. Ebenfalls kann FormMailer das Formular selber wieder als Template verarbeiten und dann genauere Fehlermeldungen ausgeben. Das setzt dann aber voraus, dass du das Formular selber nicht als HTML-Datei hast, sondern speziell einbindest. Da habe ich in der neusten Beta von FormMailer auch noch einige Verbesserungen gemacht. Bei Bedarf sende ich dir gerne die neuste BETA-Version mit einem kleinen Beispiel.

Auch wenn du bei der Java-Script Variante bleibst, würde ich zusätzlich mit den NNUL_Tags von FormMailern arbeiten. Dann hast du es so, dass alle User mit aktiviertem Java-Script Detail-Fehlermeldungen deiner JavaScript-Funktion bekommen, alle mit deaktiviertem Javascript (und Spam-Roboter) die Fehlerseite von FormMailer. Arbeitest du ohne FormMailer-Tags können User mit deaktiviertem JavaScript (oder eben auch Spam-Roboter) auch unvollständige Formulare erfolgreich absenden - das ist wohl kaum erwünscht.

Gruss
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 02. Januar 2009 um 16:35
Hallo Jürg
Ich habe mal auf dem LUNIX töff nachgeschaut und festgestellt, dass SENDMAIL sowohl in /usr/sbin als auch in /usr/lib vorhanden ist. Trotzdem findet immer noch kein Mail xfer statt obwohl die OK Seite angezeigt wird. Ich bin kein UNIX Spezi! Meine diesbezüglichen Kenntnisse beschränken sich auf die Installation von LINUX, APACHE, SAMBA und Netzwerk . . . muss da eventuell noch irgendwo an einem Config file geschraubt werden damit sendmail weiss, wie/wohin er die Emails absetzen kann/muss? Oder brauchts neben SENDMAIL noch andere Module? Ich habe im hosts file einen entsprechenden Eintrag für SMTP.bastide-immo.com gemacht. Mein Mailserver für bastide-immo.com ist im gleichen lokalen Netz wie der HTTP server (zwei versch. PC's). ???

Gruss Hans Z.

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 02. Januar 2009 um 17:52
Hallo Hans

Versuch mal in der formmailer.cgi den Wert von $mailVersand auf "FALSE" zu ändern. Dann wird das Mail nicht versendet, sondern als EML-Datei im Scriptverzeichnis gespeichert.

Wird die EML-Datei erstellt? Hat sie auch einen Inhalt? Stimmt From und To? Hat es eine Leerzeile zwischen Header (From, To, Subject) und dem eigentlichen Inhalt?

Wenn da alles gut aussieht, müsstest du mal sehen, was die Logfiles aussagen, du findest diese wahrscheinlich unter /var/log/maillog. Konfigurationen sind eigentlich keine notwendig, einige Provider lehnen aber Mails ab, wenn der Hostname keine Domain enthält (also z.B. "linux" statt "linux.home.local" heisst), keine gültige Domain hat oder was auch immer.

Wenn das Template leer ist, nicht erstellt wird oder sonst Fehler aufweist, müsstest du da ggf. Anpassungen vornehmen.

Ein
ls | mail [email protected]
auf der Shell sendet übrigens einen ls per E-Mail an die angegebene Adresse: so lange dies nicht ankommt ist deine Linux-Kiste noch nicht sauber konfiguriert.

Ich hoffe, das hilft dir weiter.

Titel: Re: Formmailer einrichten
Beitrag von hazet am 02. Januar 2009 um 18:40
Hallo Jürg
Beide funktionieren. Es wird ein .eml file geschrieben und das Mail command reagiert ohne Fehlermeldung. Jetzt muss ich wohl hinter die LINUX KISTE und die Nadel im Heuhaufen suchen . . .
Schönen Abend und Gruss
Hans Z.

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 02. Januar 2009 um 19:42
Na ja, dann viel Erfolg. Wenn das EML geschrieben wird, heisst dies mal, dass grundsätzlich das Template gelesen werden kann.

Wie gesagt: ich würde mal einen Blick ins Log werfen: /var/log/maillog

sendmail hat den Vorteil, dass es immerhin relativ "geschwätzig" ist, d.h. in den Logs in der Regel Fehlermeldungen vorhanden sind...

Gruss und ebenfalls einen schönen Abend
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 05. Januar 2009 um 10:22
Hallo Jürg
Auf der LINUX Kiste habe ich übers Wochenende versch. Aktionen durchgeführt :
- komplette Neuinstallation
- Webserver neu aufgesetzt
- GD Module und Perl geladen
- Netz konfiguriert
- MTA mit masquerading konfiguriert
Jetzt funzt alles bis auf ein paar kleine Details (möglicherweise ein verstecktes Konfigproblem?):
Um das Problem zu schildern, muss ich noch folgende Konfigdetails zu meinem Netz angeben: hinter dem ADSL Modem/Router betreibe ich ein LAN mit 3 PC's:
 - 1 x LINUX mit dem Webserver und Drucker
 - 1 x VISTA mit Mailserver (IceWARP)
 - 1 x VISTA Notebook via WLAN
Mails an remote Server funktionieren! Wenn ich eine Email an meinen lokalen Mailserver absetze, reklamiert der Mailserver gemäss Mail.info mit der Meldung: ".... (connect to meine.domain [meine router IP-adresse]:25: connection refused)
Wie gebe ich meinem LINUX bekannt, dass der Mailserver sich in meinem lokalen Netz befindet (192.168.0.x). Funzt das gleich wie mit dem host file unter VISTA?
Danke für einen hilfreichen Tipp. Sobald ich die neuen Formulare fertig erstellt habe werde ich Mitteilung machen.
Gruss und schöne Woche
Hans Z.

PS. LINUX stellt wegen der Vielfalt der für die Konfiguration verfügbaren Module echt eine Herausforderung dar. Kommt hinzu, dass die zugehörige Doku meist nicht dem aktuellen Release level entspricht . . . etwas für "bit polisher"!

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 05. Januar 2009 um 20:28
Hallo Hans

Ich weiss nicht, ob die Anpassung der /etc/hosts ausreicht, kannst es aber mal ausprobieren. Das ist vom Aufbau her identisch.

Der Mailserver ist aber ja grundsätzlich eine Abfrage des MX-Records. Wenn dieser gleich die IP zurückliefert nützt dies wenig.

Falls nicht, musst du den Mailer-Daemon direkt anpassen, das ist - je nachdem ob Sendmail oder Postfix läuft die /etc/mail/mailertable (Sendmail) oder /etc/postfix/transport (Postfix). Syntax und Befehl, der nach der Anpassung vorgenommen werden muss, findest du im Internet dann sicher.

Ich würde aber auf jeden Fall zuerst mal versuchen, die Hosts-Datei anzupassen...

Gruss
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 05. Januar 2009 um 20:40
Guten Abend Jürg
Danke für Deine Tipps. Werde diese morgen mal asuprobieren.
habe heute Nachmittag mit meinem ISP Support Kontakt und habe erfahren, dass SENDMAIL unter WIN hosting nicht unterstützt sei. ::)
Darauf hin habe ich mich entschlossen, vom WIN auf UNIX hosting zu wechseln. Wird mir zu mühsam, mich weiter mit unterschiedlichen Hosts rum zu plagen. Wahrscheinlich wäre mit dem GD Support unter WIN Hosting auch tote Hose?
Schönen Abend und Gruss
Hans Z.
PS. Das Prototyp Formular auf dem LINUX server ist unter http://www.bastide-immo.com/Formulare/AnfrageFormular_frm.html zu besichtigen.

Titel: Re: Formmailer einrichten
Beitrag von hazet am 06. Januar 2009 um 13:36
Hallo Jürg
ich  habs geschafft! Eine tolle und überzeugende Lösung mit dem "Formmailer"!
Lass mich nochmals zurück kommen auf die Situation mit Fehlern:
"...Fehler-Details: die Einbindung von Java-Script ist weiterhin möglich. Ebenfalls kann FormMailer das Formular selber wieder als Template verarbeiten und dann genauere Fehlermeldungen ausgeben. Das setzt dann aber voraus, dass du das Formular selber nicht als HTML-Datei hast, sondern speziell einbindest. Da habe ich in der neusten Beta von FormMailer auch noch einige Verbesserungen gemacht. Bei Bedarf sende ich dir gerne die neuste BETA-Version mit einem kleinen Beispiel.

Auch wenn du bei der Java-Script Variante bleibst, würde ich zusätzlich mit den NNUL_Tags von FormMailern arbeiten. Dann hast du es so, dass alle User mit aktiviertem Java-Script Detail-Fehlermeldungen deiner JavaScript-Funktion bekommen, alle mit deaktiviertem Javascript (und Spam-Roboter) die Fehlerseite von FormMailer. Arbeitest du ohne FormMailer-Tags können User mit deaktiviertem JavaScript (oder eben auch Spam-Roboter) auch unvollständige Formulare erfolgreich absenden - das ist wohl kaum erwünscht. "

Ich habe meine drei Formulare auf der LINUX domain mit Securecode und meinen eigenen Inhaltcheck scripts fertigestellt und soweit erfolgreich getestet. Wenn Scripting durch den User blockiert ist, wird nach dem Absenden des Formulars die Fehlerseite angezeigt. Folglich funktioniert der Schutz vor Spamm'ern auch wenn Scripting ausgeschaltet ist.
Wenn Du mir die Beta Test version zusendest, würde ich gerne als Gegenleistung für Deine ausgezeichnten und hilfreichen Tipps Deine neue Version mal testen. . . .

Letzte Frage: Gibt es eine Möglichkeit (oder Pläne), mit Hilfe der Mail templates die Formatierung der Mails ansprechender zu gestalten (z.Bsp. mit tabs) oder evtl. sogar als html mail?
Gruss Hans Z.

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 06. Januar 2009 um 18:47
Hallo Hans

Danke für die Antwort, toll wenn du einen Schritt weiter bist. Die BETA-Version inkl. einem kleinen Beispiel sende ich dir dann am späteren Abend per E-Mail.

Zu deiner Frage wegen der Formatierung: HTML-Mails sind kein Problem: du kannst im Header den Content-Type definieren und dann mit HTML arbeiten. Tabs funktionieren leider nicht wirklich (es wird einfach so 1:1 an dem Mailclient übergeben, der macht in der Regel aber nichts gescheites.

Mit HTML sähe der Quellcode dann etwa so aus:

From: [email protected]
To: [email protected]
Subject: Mein HTML-Mail
Content-Type: text/html

<html><body>
Mein HTML-Mail mit <b>fetter</b> Schrift.
</body></html>


Wichtig ist folgendes:
* die Content-Type Zeile gehört in den Header, also vor der Leerzeile
* HTML-Mail muss inkl. <head> und <body> Tag sein
* Es sind alle Formatierungen erlaubt (auch Tabellen). Viele Mailclients blockieren Java-Script und Bilder, also nicht zu komplizierte Mails.
* Felder weiterhin mit <!--feldname--> ausgeben

Ebenfalls zu erwähnen: Spam-Filter stellen da und dort ein Ärgernis dar. Mails vom FormMailer sind anhand des "automatischen Charakters", viel Standard-Text, Links und Mailadressen, unpersönlich, von einem Webserver versendet sowieso schon Spamverdächtig, der Einsatz von HTML-Mails kann dann noch der Tropfen sein, der das Fass zum überlaufen bringt und das Mail endgültig als Spam markiert.

Bei dir ist es aber wohl nicht so ein Problem: du sendest die Mails ja an dich selber und die werden entweder als Spam markiert oder nicht (notfalls kannst du sie auch noch in eine Whitelist hinzufügen), da ist es nicht kritisch. Ärgerlich ist es, wenn Mails an Drittpersonen gehen und dort häufig im Spam landen, auf deren Spam-Filter hast du natürlich keinen Einfluss. Wie gesagt: muss überhaupt nicht sein, je mehr Spamindizien deine Mails aber enthalten, desto grösser die Wahrscheinlichkeit, dass ein Mail mal irrtümlich bei irgendwem als Spam markiert werden.

Gruss
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 17. Januar 2009 um 14:57
Hallo
Jetzt habe ich sechs Formulare auf meinen zwei Websites erfolgreich auf den cgi formmailer mit CAPTCHA umgestellt. Dabei habe ich den mir von Jürg zur Verfügung gestellten Beta Release verwendet. Das Resultat könnt ihr hier einsehen:

http://www.bastide-midi.com/cgi-bin/formmailer.cgi?action=parsetemplate&template=anfrage_frm und
http://www.bastide-immo.com/cgi-bin/formmailer.cgi?action=parsetemplate&template=immo-form_d

Zu erwähnen habe ich noch, dass ich das Ding auf der IIE-5 (WINDOWS) Server Plattform nicht hingekriegt habe! Konsequenz war eine Zügelaktion Richtung LINUX / APACHE.

Und ganz zum Schluss möchte ich Jürg Sommer für seine Geduld und seinen Support ganz herzlich danken!!
:) :)

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 17. Januar 2009 um 17:37
Hallo Hans

Besten Dank für dein Posting: die Formulare sehen nun ja wirklich gut aus.

Zum Thema Windows sei zu sagen: meine Scripts laufen grundsätzlich unter Windows, sofern a) Perl vorhanden ist und b) ein Sendmail-Clone für Windows. Ich selber entwickle sogar unter Windows (allerdings nicht mit dem IIS, sondern einem Freeware-Webserver namens Xitami, der für die Entwicklung super ist, ich aber nie produktiv nutzen würde, nicht zuletzt weil er seit über 5 Jahren nicht mehr weiterentwickelt wurde).

Dokumentation, Default-Pfade etc. sind aber natürlich auf Linux ausgelegt und wenn man wählen kann, würde ich klar Windows empfehlen.

In deinem Fall war der Wechsel auf Linux also mit Sicherheit die beste Variante, ein K.O.-Kriterium ist Windows aber grundsätzlich nicht.

Gruss
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 19. Januar 2009 um 11:06
Hallo Jürg
Ich habe mich noch mit "finetuning" beschäftigt und bin dabei auf folgendes Problem gestossen:
1) Ich will sicherstellen, dass in numerischen Pflichtfeldern nur Ziffern akzeptiert werden
2) Ich will sicherstellen, dass in Textfeldern keine "@" Zeichen vorkommen (ausser im Email-Adress-Feld)
Dazu habe ich alle Pflichtfelder mal mit dem Prefix "NNUL_" versehen.
Dann habe ich die numerischen Pflichtfelder im Administrator Formular im Abschnitt numerische Einschränkungen wie folgt eingetragen:

NNULL_feld~=~[0-9]
...
...

Für die Textfelder habe ich im Admin Formular im Abschnitt Text-Einschränkungen folgende Definitionen eingetragen:

NNUL_textfeld~!~[@]
...
...

Resultat:
- Die Textfelder werden richtig validiert.
- Die numerischen Pflichtfelder werden als nicht ausgefüllt markiert, auch wenn der Inhalt korrekt ist.

Was läuft beim numerischen Pflichtfeld falsch bzw. wie wird ein numerisches Pflichtfeld geprüft?
???

Gruss Hans

Nachtrag um 16 Uhr:
- habe es mit einem NUM_feld probiert und so unter Num. Einschränkung definiert: NUM_feld~=~[0-9]
--> prüft zwar auf numerischen Inhalt, lässt aber ein leeres Feld zu!

Deshalb nochmals die Frage: Wie wird ein numerisches Pflichtfeld definiert (ausschliesslicher Inhalt: Ziffern)?

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 19. Januar 2009 um 22:13
Hallo Hans

Zuerst: der Tag für Pflichtfelder ist etwas verkürzt und heisst "NNUL_" und nicht "NNULL_". Weiss nicht, ob es nur ein Fehler im Forumsbeitrag ist oder nicht.

Dann zu deiner Frage: bei den numerischen Einschränkungen sind nur Vergleiche erlaubt (Zahl grösser 15 etc.). Wenn du ein Feld auf die enthaltenen Zeichen prüfen willst - egal ob das Buchstaben oder Zahlen sind - musst du in die Text-Einschränkungen.

Dort ist wichtig, dass es immer ein ENTHÄLT ist, d.h. die Abfrage

meinfeld~=~[0-9]

ist wahr, sobald eine Zahl enthalten ist, also bei "123" aber auch bei "123test" oder "test123test". Das ist nicht das, was du willst. Mit ^ markierst du den Anfang eines Feldes, mit $ das Ende (im Adminbereich hat es übrigens einen Link "Regex". der die Perl Regular Expressions auch kurz erklärt).

Somit ist also ^[0-9]*$ Anfang des Strings, dann eine beliebige (0-n) Anzahl Zahlen und dann das Ende. Somit ist die Einschränkung

meinfeld~=~^[0-9]+$

von Anfang an mindestens 1, max. unendlich Zahlen und dann Ende. Das ist das, was du willst. Ob du es nun als NUM_ oder NNUL_ definierst ist somit eigentlich egal, da bereits die Inhaltsbeschreibung festlegt, dass mind. 1 Zeichen enthalten sein muss und nur Zahlen erlaubt sind.

Beachte: wenn auch Minus und Kommazahlen erlaubt sein sollen, lautet die Regel

meinfeld~=~^-?[0-9]*\.?[0-9]+$

Heisst:
^    beginn des Feldes
-?     Minuszeichen muss 0 oder 1x vorkommen
[0-9]*    beliebige Anzahl Zahlen (0 bis unendlich)
\.?     ein Punkt muss 0 oder einmal vorkommen
[0-9]+   mind. 1 Zahl
$   Ende des Feldes

Somit wäre
-1
1
1.00
.10
-.10
0.10
erlaubt. Wichtig: das erste [0-9] muss unbedingt mit einem * und nicht - was eigentlich logisch wäre - einem + geschrieben werden. Dies würde zwar bedeuten, dass bei Kommazahlen zwingend eine Zahl vor dem Punkt eingegeben werden muss (das wäre wohl beabsichtigt), heisst aber auch, dass mind. 1 Zahl kommen muss, dann optional ein Punkt und dann wieder mind. 1 Zahl. Somit erfüllt eine einstellige Zahl die erste Regel (mind. eine Zahl), die zweite (0 oder 1 Punkt, in diesem Fall 0) aber nicht die dritte (nochmals eine Zahl). Mit dieser Regel wären also nur Zahlen mit mind. 2 Stellen erlaubt.

Habe ich nun genug verwirrung gestiftet? :) Bei Fragen einfach nochmals melden.

Gruss
Jürg

PS: statt [0-9] kann man übrigens auch \d schreiben (steht für Digit). Auf die Funktionalität hat es aber keinen Einfluss und [0-9] wird problemlos funktioniereren.
^[0-9]+$
ist also gleichbedeutend wie
^\d+$

Titel: Re: Formmailer einrichten
Beitrag von hazet am 20. Januar 2009 um 06:21
Hallo Jürg
Herzlichen Dank für Deine wie immer ausführlichen und "geduldigen" Erklärungen. NNULL war ein (freudscher) Verschreiber . . . . Jetzt funktionieren meine Feldvalidierungen wie beabsichtigt! :) :)
Eine Anregung hätte ich noch: Ergänze bitte die Dokumentation im Bereich Adminformular und im Kapitel 7 mit Beispielen, wie in Deiner vorstehenden Antwort. Nicht Script Profis -wie ich einer bin- haben Mühe mit den "kryptischen" Bedeutungen der Sonderzeichen (erinnert mich irgendwie an pharaoniscche Hyroglyphen).

Schönen Tag und Gruss
Hans

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 20. Januar 2009 um 23:42
Hallo Hans

Danke für deinen Vorschlag, habe die Dokumentation etwas ergänzt. Die Regular-Expressions sind aber halt schon sehr vielfältig (und durchaus auch etwas kryptisch): hat zwar den Vorteil, dass man wirklich fast alles mit denen machen kann, aber auch den Nachteil dass man sich etwas einarbeiten muss und ich wahrscheinlich tausend Beispiele bringen könnte und der Benutzer trotzdem nicht das findet, was er jetzt genau will.

Ich hoffe aber mit der neuen erweiterten Dokumentation sind dann nochmals ein paar Sachen klarer. Sonst kann man ja im Forum nachfragen :)

Gruss
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 30. Januar 2010 um 15:18
Hallo Jürg
Ich bin zur Zeit beim "faceliften" einer meiner zwei Websites und habe dabei von CS GOLIVE auf DREAMWEAVER CS4 umgestellt. Dabei bin ich soweit gut vorangekommen. Nun scheitere ich aber an den Formularen.
Folgende Situation, die mich seit einigen Stunden fast zum Verzweifeln bringen:
- Das Formular (bzw. das template) wird von formmailer.cgi  so dargestellt, wie ich mir das vorgestellt habe
- aber schon beim erstmaligen Aufruf des Formulars erscheint die letzte Fehlermeldung "Es wurden nicht alle Felder korrekt ausgefüllt:! Siehe oben für Details" (<!--if:action!parsetemplate§<br><span class="hinweis"><b>Es wurden nicht alle Felder korrekt ausgef&uuml;llt:! Siehe oben für Details&lt;/b>&lt;/span>-->)
- es werden keine "Detailfehlerzeilen" angezeigt
- wenn ich im Firefox und IE8 den Seitencode anschaue, fällt mir auf, dass die Kommentarzeilen (mit dem code <--error . . . .-->) fehlen. Die werden wohl vom Browser unterdrückt?
- das seccode Feld wir korrekt angezeigt

Help help help . . . . Wo muss ich suchen!

Gruss Hans

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 30. Januar 2010 um 19:05
Hallo Hans

Da du die Software geändert hast, würde ich da suchen. So wie es aussieht wurden Kommentare entfernt die Steuerzeichen
<!--feldname-->
sind ja HTML-Kommentare. Werden diese gelöscht oder aber verändert (z.B. Schlusszeichen an falscher Stelle), führt das natürlich zu Problemen. Wichtig ist, dass du das Template direkt in einem Editor anschaust und nicht den Quellcode vom IE: dort ist das Ergebnis bereits verarbeitet und entspricht nicht mehr dem Original-Template. Du kannst beispielsweise die Fehlermeldung anschauen: der Code, den du gepostet hast, also

<!--if:action!parsetemplate§<br><span class="hinweis"><b>Es wurden nicht alle Felder korrekt ausgef&uuml;llt:! Siehe oben für Details&lt;/b>&lt;/span>-->

ist korrekt. Schau dir das Template in einem Texteditor (notfalls Wordpad, besser aber ein vernünftiger wie unter http://www.cgicorner.ch/kb/textedit/Texteditoren aufgezählten, z.B. PsPad) an: wenn die Meldung schon am Anfang kommt, muss Dreamweaver da was umgestellt haben, z.B. das --> am Schluss weiter vorne platziert.

Generell sind "intelligente" WYSIWYG-Editoren wie Dreamweaver teilweise zu intelligent und verändern die Templates ungewollt. Das dürfte auch bei dir der Fall sein. Ich kenne Dreamweaver aber zu schlecht, um zu sagen, ob man da was einstellen kann, ggf. muss die Seite in einem reinen Texteditor nochmals etwas nachbearbeitet werden.

Ich hoffe, diese Info hilft dir weiter, asonsten sende mir bitte mal dein Template als ZIP-Archiv per E-Mail zu, dann schaue ich, wo Dreamweaver konkret was verändert hat.

Gruss
Jürg

Titel: Re: Formmailer einrichten (DREAMEAVER bug?!)
Beitrag von hazet am 31. Januar 2010 um 08:05
Hallo Jürg
es scheint sich tatsächlich um einen DREAMWEAVER bug zu handeln:
- wenn ich im Code vor der "Publikation" (hochladen auf den Server) reinschaue, sieht alles korrekt aus!
- wenn ich danach den Code auf dem Server anschaue, stelle ich fest, dass plötzlich vor den Paragraf-Zeichen in den Kommentarfeldern ein zusätzliches Zeichen "Â" steht. Das sieht dann so aus: "Mme.§selected" anstatt "Mme.§selected". ??? Wieso DREAMWEAVER dazu kommt, in Eigenregie den Kommentarcode abzuändern, ist mir rätselhaft. Was hat die SW dort drin zu suchen? Tatsache ist, dass deswegen wieder mal viel Zeit nutzlos vertan wurde . . .>:(>:(
Ich werde einen Bug report an ADOBE loslassen. Vielleicht ist's sogar ein bekanntes Problem. (Ich hatte erst vorgestern die letzten Updates nachgeladen . . . .).
Danke für Deinen wie immer hilfreichen Support.
Gruss und schönen Sonntag
Hans  

Titel: Re: Formmailer einrichten
Beitrag von cgicorner.ch am 31. Januar 2010 um 14:00
Hallo Hans

Ja, die mitdenkenden HTML-Editoren, nur Ärger... :)

Evtl. könnte es mit der Zeichensatz-Codierung zusammenhängen, dass da in UTF8 codiert wird. Weiss es aber nicht genau.

Grundsätzlich ist es mit jedem WYSIWYG-Editor immer etwas gefährlich, Templates zu editieren, die später von einem Script nochmals verarbeitet und erst dann ausgegeben werden, zu editieren. Da sind - nicht nur bei mir - gewisse "Regeln" einzuhalten, an denen automatische Optimierungsversuche der Programme nicht selten scheitern. Wenn immer möglich würde ich also für Templates zu einem reinen Texteditor raten: ist zwar etwas mühsamer, weil man dann den HTML-Code editieren muss, dafür wird sicher nicht verändert...

Mal sehen, ob du von Adobe diesbezüglich ein Feedback erhälst. Auf jeden Fall natürlich auch dir einen schönen Sonntag.

Gruss
Jürg

Titel: Re: Formmailer einrichten
Beitrag von hazet am 01. Februar 2010 um 08:19
Hallo Jürg
Es gibt im Webdesign kaum etwas "mühsameres" als Formulare! Ich verstehe nicht, weshalb die Webstandards diesbezüglich nichts wirklich neues anbieten bzw. die Web Design Entwicklungs Industrie diesbezüglich keine neuen Ideen hat und einfach zu verwendende Werkzeuge anbietet. Die Notwendigkeit, auf Code Ebene rumwühlen zu müssen, sollte endlich auf dem Müllhaufen der Geschichte entsorgt werden. . . . .
Gruss und schönen Tag
Hans



cgicorner.ch » Powered by YaBB 1 Gold - SP3!
YaBB © 2000-2004. All Rights Reserved.