Captcha in vorhandenes Formular einbauen

Fragen zum Erstellen von Templates für webEdition.
uschrader
Junior Member
Beiträge: 21
Registriert: Mo 17. Mai 2010, 16:23

Captcha in vorhandenes Formular einbauen

Beitragvon uschrader » Mi 7. Okt 2015, 17:47

Hallo,

ein Kunde möchte unbedingt nachträglich ein Captcha in schon ewig vorhandene Formulare eingebaut haben. Und nein, ess MUSS Captcha sein, keine andere Chance. Ich habe heute schon einiges ausprobiert und im Forum durchgelesen - aber ohne richtige Doku und Beispiel vesteh ich das einfach nicht.
(Falls sich jemand erbarmt und wenn ich es hinterher verstehe, schreib ich auch gerne ein Anwendungsbeispiel für http://documentation.webedition.org/wik ... tion/start . Und keine Sorge, DAS kann ich mal, ich hab schon einige Dokumentationen geschrieben :-) )

Folgendes ist vorhanden:
- webEdition Version 6.3.9
- Einstellungen umgestellt auf: "Formmail über webEdition-Dokument aufrufen", damit ich <we:form mit id=""> für eine Zwischenseite für captcha nutzen kann - wie hier vorgeschlagen:
http://webedition.org/de/webedition-cms ... e-formmail

Weiterhin kenne ich
http://www.we-devedge.de/samples/?we_objectID=1650

Seite 1 mit Formular
Das Formular ist so aufgebaut:

Code: Alles auswählen

<we:form 
type="formmail" 
name="stoerung_melden" 
recipient="xyz" 
from="xyz" 
required="KundenNr,email" 
order="KundenNr,Name,Strasse,Ort,Telefon,email" 
subject="Störung melden" 
onerror="534" 
onsuccess="532" 
onmailerror="533" 
confirmmail="true" 
preconfirm="EMailtextVorFeldern" 
postconfirm="EMailtextNachFeldern" 
charset="utf-8" 
mimetype="text/plain" 
forcefrom="true" 
xml="true">
Dirk von devedge.de verweist im Captcha-Template per ID auf ein php-Dokument, welches wiederum druch ein zweites Template "Formularauswertung! mit Captcha-Prüfung erstellt wird. Im 2. Template steht

Code: Alles auswählen

<!-- ZAHLENCODE AUSWERTEN -->
<we:ifCaptcha name="code">
        <p><strong>Der eingegebene Zahlen<span lang="en" xml:lang="en">code</span> ist richtig.</strong>
        </p>
 <we:else />
        <p><strong>Der eingegebene Zahlen<span lang="en" xml:lang="en">code</span> ist nicht richtig.</strong>
        </p>
</we:ifCaptcha>
Nun weiß ich, wie die Prüfung angelegt wird, aber nicht, wie meine Daten letztendlich versendet werden - die müssten bei einer Zwischenseite ja auch irgendwie gespeichert/übergeben werden

- Wenn ich im vorhandenen Formular (Seite 1) "id="123" dazufüge, werden dann zuerst die Attribute "onerror, onsuccess, onmailerror" gecheckt, bevor es weiter zum Dokument 123 geht? Das wäre gut.
- Soll ich im ausgelagerten Dokument 123 im 2. Schritt das Capta anlegen und dann im 3. Schritt prüfen. Fänd ich OK. Aber wie werden dann die Formulardaten zwischengespeichert? Wie komme ich zurück bei falschen Captcha-Eingaben, wie weiter bei Richtigen?
- Soll ich auf dem Formular selber das Captcha anlegen und im 2. Schritt in Dokument 123 prüfen?Wie werden dann die Daten zwischengespeichert und bei Erfolg weitergeleitet? Wie komme ich zurück zum Captcha, wenn es falsch eingegeben wurde?
- Wenn das Captcha mit auf der Formularseite angelegt ist, welches Attribut wird zuerst ausgeführt: id, onerror, onsuccess, onmailerror? Kann ich das beeinflussen, bspw. durch die Reihenfolge im Template?

Ihr seht, mir fehlt das Grundverständnis für die Funktionsweise. Und zumindest ich kann das nirgendwo rauslesen. Und ich glaub, das interessiert noch mehr Leute als mich... Ich wäre echt dankbar für einige Erklärungen und Beispiele.

Abendgruß von Undine

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Captcha in vorhandenes Formular einbauen

Beitragvon mokraemer » Do 8. Okt 2015, 00:08

Ich bin das bei dir mal überflogen. Ansich hast du doch alles zusammen.
Du packst das <we:captcha/> in das Formular.
Und auf der Folgeseite prüfst du (wie du es hast) mittels <we:ifCaptcha/> die Richtigkeit. Wenn es Richtig ist, dann sendest du die Daten per <we:formmail/> ab.
Also:

Code: Alles auswählen

<we:ifCaptcha>
  <we:formmail/>
Vielen Dank für Ihre Daten.
<we:else/>
Zurück (am einfachsten per browser-back).
</we:ifCaptcha>
webEdition-Kern-Entwickler

uschrader
Junior Member
Beiträge: 21
Registriert: Mo 17. Mai 2010, 16:23

Re: Captcha in vorhandenes Formular einbauen

Beitragvon uschrader » Do 8. Okt 2015, 00:50

mokraemer hat geschrieben:Ich bin das bei dir mal überflogen.
oh wie schön, ich bin nicht alleine nachts wach :-) Und danke für deine Lösung. Ich werde sie morgen ausprobieren, denn die 2-Schritt-Lösung finde ich ganz gut.

Ich habe eben noch mal gesucht und rumprobiert. Gehofen hat dieser Thread:
http://forum.webedition.org/viewtopic.p ... it=captcha

Hierbei wird das Captcha auf der 1. Formularseite integriert.
Bei mir ist es übrigens egal, ob die Einstellungen unter Extras-Einstellungen-Allgemein Tab "Formmail" Auswahl "Formmail über webEdition-Dokument aufrufen" auf ja oder nein stehe - funktioniert beides gleich.

Trotz allem gibt es noch Usabilityprobleme. Ist das Captcha falsch eingegeben, wird
- 1. die Seite auf den Anfang gesetzt. Das heißt,
---> das Captcha ist nicht zu sehen, da muss erst hingescrollt werden. Es gibt halt keine seperate Fehlermeldung.

Gravierender finde ich dieses Verhalten:
---> ist das Captcha richtig eingegeben, aber ein Feld fehlt, wird die im form-TAg angegebene Fehlerseite aufgerufen. Von der leite ich mit history.back zurück zur Formularseite. Hier landen wir mit der Ansicht auf das Captcha - welches die alten Zahlen anzeigt, mit einem Formularfeld, dass die richtigen Zahlen beinhaltet. Fülle ich nun das fehlende Formularfeld aus (oder auch nicht) und sende erneut ab, wird beim 2. absenden diese "richtigen" Zahlen des Bilder aber nicht mehr als richtig akzeptiert. Das Formular wird mit geleerten Feldern neu geladen.

Frage also: wenn ich von den Fehlerseiten zurückleite, wie mache ich es, dass
- das Captcha neue Zahlen anzeigt?
- das Captcha Formular-Feld leer ist?
- die vorausgefüllten Felder befüllt bleiben?

ich probier morgen einige Ideen - und berichte weiter.

Gute Nacht :-)

uschrader
Junior Member
Beiträge: 21
Registriert: Mo 17. Mai 2010, 16:23

Re: Captcha in vorhandenes Formular einbauen

Beitragvon uschrader » Do 8. Okt 2015, 15:15

Hallo zusammen,

ich bekomme zwei Probleme nicht geregelt:

1 Case: Captcha soll auf einer Folgeseite abgefragt werden
Beim Abschicken des Formulars wird offensichtlich keine Formularprüfung mehr vorgenommen, ob Pflichtfelder fehlen (onerror-Seite), es wird sofort auf die im Form-Tag angegebene id-Seite weitergeleitet.

--> Damit fällt "Captcha auf Folgeseite" aus.


2 Case: Captcha wird unter dem Formular abgefragt.

Auch hier scheint das Captcha als erstes geprüft zu werden. Das bringt so einige Usability-Probleme.

Ich habe alles wie oben beschrieben eingebaut. Funktioniert aber nur, solange alle Pflichtfelder und das Captcha richtig eingegeben werden.
Hier die für mich unlösbaren Usability-Probleme in der Fehlerbehandlung:

a) Der Nutzer gibt das Captcha falsch ein:
--> die Seite reloaded um ein neues Captcha zu generieren. Dabei verschwinden aber auch alle vom Nutzer eingegebenen Daten.
-->Weiterhin wird die Seite am Anfang gezeigt - mein Formular ist aber lang, das Captcha also nicht zu sehen. Der User weiß gar nicht was los ist.
b) Der Nutzer gibt das Captcha richtig ein, vergisst aber ein Pflichtfeld: er wird auf die Fehlerseite (onerror) weitergeleitet. Hier kann er mit "zurück" zum Formular zurück.
--> gehe ich mit "history.back" zurück, sieht der Nutzer seine bisher ausgefüllten Daten, aber auch das alte Capture mit den alten ausgefüllten Zahlen. Füllt er nun alles richtig aus und sendet erneut, wird das Captcha kein zweites Mal akzeptiert - die Seit wird neu mit leerem Formular und neuem Captcha geladen.
--> gehe ich mit ner URL zurück, wird die Seite neu geladen - und wieder sind alle bereits ausgefüllten Formularfelder futsch.

Zu Grunde liegendes Problem in beiden Fällen:
Wie bekomme ich das Formular dazu, erst die Pflichtfeldern und danach das Captcha zu prüfen?

Das war jetzt mal echt viel gefrickel für nichts. Mir fällt keine Verwendung mit sinnvoller Fehlerbehandlung ein. Ein funktionierendes Anwenderbeispiel wäre wirklich SEHR hilfreich. Vieleicht bin ich nicht genug drin in der Materie, aber ist das überhaupt möglich mit den vorhandenen Mitteln?

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Captcha in vorhandenes Formular einbauen

Beitragvon mokraemer » Do 8. Okt 2015, 19:16

Zu 1.: Die Folgeseite muß als error_page im Request vorliegen - aktuell hat das tag we:formmal keine solchen Parameter - könnte aber Sinn machen.

Zu 2.: Das wundert mich etwas. Denn das Bild hat einen Expires Zeitstempel (weiß nicht mehr, wann ich das captcha überarbeitet habe - müßte aber in 6.3.9 drin sein). D.h. wenn du ein back machst, muß der Browser das Bild neu holen!

Zunächst ist die Frage, geht der normale Fall - dann kümmert man sich um den Fehlerfall.
Ich gehe mal davon aus, das der normale Fall bei dir geht. Um den Fehler nun abzufangen kann man 2 Wege gehen:
1. Man leitet das Formular auf sich selbst weiter und macht darin die Abfragen, sind die korrekt geht man auf eine Folgeseite,also in etwa
<code>
<we:ifVarNotEmpty type="request" name="submitted">
<we:ifCaptcha .....
<we:formmail ..../>
<we:setVar name="ok" value="1"/>
<we:else/>
Cap falsch
</we:ifCaptcha>
<we:ifVarEmpty type="global" name="ok">
<we:form.....>
Mein Fomular mit
<input name="Test" value="<we:Var type="request" name="Test"/>"/>
<input type="hidden" name="submitted" value="1"/>
<input type="submit"/>
</we:form>
</we:ifVarEmpty>
</code>

Da ich das Beispiel hier im Editor getippt habe, hoffe ich das der Weg erkennbar ist, auch wenn man es nicht 1:1 in WE pasten kann.

2. Oder wenn man es eben mit mehr als einer Seite machen will, dann muß man alle Formular-Elemente als hidden-Felder erneut mit dem zurück übergeben - das würde ich mit 2 Zeilen php lösen - aber ich denke es ist sinnvoller das in einer Seite laufen zu lassen.
webEdition-Kern-Entwickler

uschrader
Junior Member
Beiträge: 21
Registriert: Mo 17. Mai 2010, 16:23

Re: Captcha in vorhandenes Formular einbauen

Beitragvon uschrader » So 11. Okt 2015, 19:40

mokraemer hat geschrieben:Zu 1.: Die Folgeseite muß als error_page im Request vorliegen - aktuell hat das tag we:formmal keine solchen Parameter - könnte aber Sinn machen.
Wenn ich das richtig verstehe. Captcha als Folgeabfrage und - seite nach Formularprüfung fällt also tatsächlich aus. Oder?

Dann macht doch aber auch der Hinweis keinen Sinn, dass das Attribut "id" dazu dienen kann, eine Captcha-Überprüfung für das Mail-Formular auf einer Zwischenseite durchzuführen:
http://webedition.org/de/webedition-cms ... e-formmail
Oder?
mokraemer hat geschrieben:Zu 2.: Das wundert mich etwas. Denn das Bild hat einen Expires Zeitstempel (weiß nicht mehr, wann ich das captcha überarbeitet habe - müßte aber in 6.3.9 drin sein). D.h. wenn du ein back machst, muß der Browser das Bild neu holen!
So, ich habs noch mal geprüft: Version 6.3.9 (6.3.9.0, SVN-Revision: 8466), mit javascript histora.back wird das Captcha-Bild nicht geändert.
1. nix eingeben außer den Zahlencode
--> Fehlerseite wird angezeigt.
2. Dort mit dem Link "back" zurück
--> Altes Captcha-Zahlenbild da.

Hier bitte ausprobieren:
http://www.buchholz-digital.de/kontakt/ ... melden.php
mokraemer hat geschrieben:2. Oder wenn man es eben mit mehr als einer Seite machen will, dann muß man alle Formular-Elemente als hidden-Felder erneut mit dem zurück übergeben - das würde ich mit 2 Zeilen php lösen - aber ich denke es ist sinnvoller das in einer Seite laufen zu lassen.
Schöne Idee. Aber ich kann das nicht mal eben. Ich weiß wie PHP funktioniert und kann einfach Dinge damit erledigen und vorhandene Scripte anpassen. Deshalb brauche ich ja ein CMS mit funktionierenden Boardmitteln. Und n Captcha ist ja nun nicht sooo ungewöhnlich.
mokraemer hat geschrieben: 1. Man leitet das Formular auf sich selbst weiter und macht darin die Abfragen, sind die korrekt geht man auf eine Folgeseite,also in etwa
<code>
<we:ifVarNotEmpty type="request" name="submitted">
[... siehe oben ...]
</code>
OK, ich muss den Input-Feldern Variablen zuordnen. Danke, dass du zeigst, wie das geht. Das könnte ich hinbekommen. Die Folgeseite sollte dann allerdings schlicht die aus "onsuccess" sein, aber das sehe ich dann.
Bin gespannt, was mit dem Nicht-Neu-Laden des Captcha geschieht, wenn das Formular sich selber aufruft. Ist das ein richtiger Reload? Dann wird das Captcha neu sein - allerdings werden auch die Formularfelder leer sein - schaun wir mal. Ich bin gespannt.

SvenLSK
Member
Beiträge: 57
Registriert: Di 28. Feb 2017, 14:20

Re: Captcha in vorhandenes Formular einbauen

Beitragvon SvenLSK » Mi 19. Jul 2017, 14:29

?????? Ich habe es leider nicht verstanden was zu tun ist?

Ich muss in mein Formular ein Captcha einbauen:

Code: Alles auswählen

 <we:form type="formmail" recipient="name@domain.de" subject="Formular" onsuccess="5" onerror="9" onmailerror="9" mimetype="text/html" confirmmail="false" required="Name">
 <input class="input" type="text" name="Name" id="Name" placeholder="Name" required>
 <input class="input" type="text" id="email" name="email" placeholder="E-Mail-Addresse" required>
 <textarea class="input" name="nachricht" id="nachricht" placeholder="Nachricht"></textarea>
   
<we:captcha width="100" height="25" maxlength="7" font="Arial,Verdana" fontsize="15" case="lower" subset="num" skip="i,I,l,L,0,o,O,1,g,9" />
<input name="captcha_text" id="captcha_text" type="text" required/> 

<input type="submit" class="button" value="Absenden">
</we:form>
leider ignoriert er völlig das Captcha - ob richtig ober falsche Zahlen eingegeben werden - scheint egal... das Formular ignoriert es völlig.

Was muss ich tun? Was mache ich falsch! :oops:

SvenLSK
Member
Beiträge: 57
Registriert: Di 28. Feb 2017, 14:20

Re: Captcha in vorhandenes Formular einbauen

Beitragvon SvenLSK » Fr 21. Jul 2017, 12:29

Verständisfragen:

1. Benötige ich unbedigt <we:ifCaptcha> für die Funktion?

2. Woher weiß <we:captcha> das der Text aus dem Feld <input name="captcha_text" id="captcha_text" type="text" required/> abgeglichen werden soll?

3. Muss ich in webEdition selbst unter Einstellungen etwas abändern?

SvenLSK
Member
Beiträge: 57
Registriert: Di 28. Feb 2017, 14:20

Re: Captcha in vorhandenes Formular einbauen

Beitragvon SvenLSK » Fr 21. Jul 2017, 14:00

Noch eine Verständisfrage:

Kann ich bei <we:form> eine Ergänzung machen (bei den Fehlerseiten) um eine Fehlerseite anzusteuern, falls das Captcha falsch eingetragen wurde und wenn das captcha richtig war schlichtweg einfach nur das Formular abgesendet wird?

SvenLSK
Member
Beiträge: 57
Registriert: Di 28. Feb 2017, 14:20

Re: Captcha in vorhandenes Formular einbauen

Beitragvon SvenLSK » Mo 31. Jul 2017, 10:13

Wer kann mir helfen? Bin ratlos! :roll:

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Captcha in vorhandenes Formular einbauen

Beitragvon WBTMagnum » So 6. Aug 2017, 22:47

Hey,

Ich habe <we:captcha/> zwar selbst noch nie verwendet, denke aber, dass Marc hier schon den Weg ganz gut beschrieben hat. Ich glaube ihr habt aber bei einem Punkt aneinander vorbei geredet:
  • Du: <we:form type="formmail" ...>
  • Marc: <we:form ...> + <we:formmail/>
Ob und wie ein CAPTCHA im Rahmen von <we:form type="formmail" ...> verwendet werden kann ist mir leider unklar. Es gab hier zwar mal das Attribut "oncaptiaerror" (Anm.: ist das ein Typo in der Tag-Referenz??), so ganz erschließt mir hier aber nicht wie das sinnvoll einzusetzen ist.

Ich persönlich würde auch eher den von Marc beschriebenen Weg beschreiten.


Liebe Grüße,
Sascha


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste