Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 05. November 2019 07:27

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 782
Webseite

Formbuilder Captcha Fehlerausgabe im Formular

Hallo!

Ich habe mir gerade das Captcha-Modul installiert, das ich gerne in diversen Formularen auf meinen Webseiten verwenden möchte.
Funktioniert auch so wie es soll, solange man das Captcha richtig eingibt - macht man einen Fehler lädt er die Seite neu und alle Felder sind wieder leer und er springt bei der Seite ganz nach oben (bei einem One-Pager ungünstig).

Wenn man die Emailadresse falsch, keinen Namen oder keine Nachricht eingibt erscheint ein Popup neben dem Feld, dass die Meldung "Name eingeben" o.ä. ausgibt.

Kann ich ein solches Popup auch bei ungültigem Captcha ausgeben?
Bzw. kann man die Fehlerausgabe wieder "altmodisch" über oder unter dem Formular machen?

[EDIT]
Gerade habe ich bemerkt, dass er Fehler im Captcha komplett ignoriert, egal welches Formulartemplate ich wähle.
Ich habe im Captcha-Modul "HN Captcha" ausgewählt.
[\EDIT]

Vielen Dank!

Beitrag geändert von brandy (11. November 2019 14:25)

Offline

#2 11. November 2019 14:11

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 782
Webseite

Re: Formbuilder Captcha Fehlerausgabe im Formular

Hat jemand von euch Captcha installiert und in Verwendung?
Wie konfiguriere ich es richtig?

Offline

#3 11. November 2019 15:00

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.162
Webseite

Re: Formbuilder Captcha Fehlerausgabe im Formular

Welche Version CMSMS, Formbuilder und Captcha?


Ubuntu 16.04 mit KDE - Kubuntu 18.04 / win10 (1 duo-boot laptop)- LAMP

Offline

#4 11. November 2019 15:04

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 782
Webseite

Re: Formbuilder Captcha Fehlerausgabe im Formular

CMSMS: 1.12.2
Formbuilder: 0.8.1.6
Captcha: 0.5.5 / 1.0 (beide probiert)

Offline

#5 11. November 2019 20:44

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.300

Re: Formbuilder Captcha Fehlerausgabe im Formular

Es kann kein Popup mit Fehlermeldungen geben, weil die Eingaben des Captchas erst auf dem Server geprüft werden. Das Formular wird abgeschickt, ausgewertet und die Seite wird neu geladen. Die Auswertung des Formulars - und somit auch des Captchas - übernimmt der Formbuilder.

Wenn Du willst, dass das Ganze via Ajax im Hintergrund läuft, ohne die komplette Seite neuzuladen, müsstest Du das Formbuilder-Formular entsprechend aufbauen. Ich weiß aber gerade nicht, ob der Fombuilder zur Auswertung des Formulars entsprechende Ajax-Schnittstellen bietet bzw. ob das einfach über den URL-Parameter "showtemplate=false" funktionieren würde.

Dass im Fall einer fehlerhaften Captcha-Eingabe keine Fehlermeldungen angezeigt werden, kann ich nicht nachvollziehen. Im Beispiel Contact-Formular steht über dem Formular "Captcha was not correct." Den Text kann man in den Einstellungen des Formulars im Tab Captcha-Einstellungen selber konfigurieren. Die Fehlermeldung ist aber ohne entsprechende Stylesheets leicht zu übersehen.
Das muss man natürlich noch hübsch machen. Es gibt ein Basis-Css vom Formbuilder. Dass müsstest Du lediglich mit Deinem Seitentemplate verknüpfen. Da sieht die Captcha-Meldung aber immer noch bescheiden aus. Aber in diesem CSS würde ich das dann formatieren.

Offline

#6 12. November 2019 07:37

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 782
Webseite

Re: Formbuilder Captcha Fehlerausgabe im Formular

Das hab ich mir so gedacht!
Kann ich die Fehlermeldungen wieder "oldschool" ausgeben lassen, so dass sie gleich unter oder über dem Formular stehen?

Offline

#7 12. November 2019 14:16

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.300

Re: Formbuilder Captcha Fehlerausgabe im Formular

Aber das tut sie doch normalerweise.
Undzwar dort, wo es im Formulartemplate angegeben ist.
Schau doch einfach mal in die Beispielformulare.
Da steht z.B. direkt über dem Formular:

	{if isset($fb_form_has_validation_errors) && $fb_form_has_validation_errors}
		<div class="error_message">
		<ul>
		{foreach from=$fb_form_validation_errors item=thisErr}
			<li>{$thisErr}</li>
		{/foreach}
		</ul>
		</div>
	{/if}
	{if isset($captcha_error) && $captcha_error}
		<div class="error_message">{$captcha_error}</div>
	{/if}

Offline

#8 12. November 2019 15:35

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 782
Webseite

Re: Formbuilder Captcha Fehlerausgabe im Formular

Das hab ich auch gesehen, aber siehe hier:
Link

Du kannst gerne absenden - kein Problem!

Offline

#9 13. November 2019 19:09

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.300

Re: Formbuilder Captcha Fehlerausgabe im Formular

Schau doch mal nach dem Absenden mit dem Webinspector Deinen HTML-Code unter dem Formular an.
Da steht alles wichtige drin.
Nur leider in html-Kommentaren.
Keine Ahnung, wie das zustande kommt.

Offline

#10 26. November 2019 09:18

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 782
Webseite

Re: Formbuilder Captcha Fehlerausgabe im Formular

Hallo!

Danke NaN - hab ich jetzt auch gesehen. Woher das kommt kann ich aber nicht nachvollziehen.
Die Formularvorlage sieht eigentlich gut aus:

{* DEFAULT FORM LAYOUT / pure CSS *}
{literal}
<script type="text/javascript">
function fbht(htid)
	{
		var fbhtc=document.getElementById(htid);
		if (fbhtc)
			{
			if (fbhtc.style.display == 'none')
				{
				fbhtc.style.display = 'inline';
				}
			else
				{
				fbhtc.style.display = 'none';
				}
			}
}
</script>
{/literal}
{$fb_form_header}
{if $fb_form_done == 1}
	{* This first section is for displaying submission errors *}
	{if isset($fb_submission_error) && $fb_submission_error}
		<div class="error_message">{$fb_submission_error}</div>
		{if isset($fb_show_submission_errors) && $fb_show_submission_errors}
			<div class="error">
			<ul>
			{foreach from=$fb_submission_error_list item=thisErr}
				<li>{$thisErr}</li>
			{/foreach}
			</ul>
		</div>
		{/if}
	{/if}
{else}
	{* this section is for displaying the form *}
	{* we start with validation errors *}
	{if isset($fb_form_has_validation_errors) && $fb_form_has_validation_errors}
		<div class="error_message">
		<ul>
		{foreach from=$fb_form_validation_errors item=thisErr}
			<li>{$thisErr}</li>
		{/foreach}
		</ul>
		</div>
	{/if}
	{if isset($captcha_error) && $captcha_error}
		<div class="error_message">{$captcha_error}</div>
	{/if}

	{* and now the form itself *}
	{$fb_form_start}
	<div>{$fb_hidden}</div>
	<div{if $css_class != ''} class="{$css_class}"{/if}>
	{if $total_pages gt 1}<span>{$title_page_x_of_y}</span>{/if}
	{foreach from=$fields item=entry}
		{if $entry->display == 1}
			{strip}
			{if $entry->needs_div == 1}
				<div
				{if $entry->required == 1 || $entry->css_class != '' || $entry->valid == 0} class="
					{if $entry->required == 1}required{/if}
					{if $entry->css_class != ''} {$entry->css_class}{/if}
					{if $entry->valid == 0} fb_invalid{/if}
					"
				{/if}
				>
			{/if}
			{if $entry->hide_name == 0}
				<label{if $entry->multiple_parts != 1} for="{$entry->input_id}"{/if}>{$entry->name}
				{if $entry->required_symbol != ''}
					{$entry->required_symbol}
				{/if}
				</label>
			{/if}
			{if $entry->multiple_parts == 1}
				{section name=numloop loop=$entry->input}
					{if $entry->label_parts == 1}
						<div>{$entry->input[numloop]->input}&nbsp;{$entry->input[numloop]->name}</div>
					{else}
						{$entry->input[numloop]->input}
					{/if}
					{if isset($entry->input[numloop]->op) && $entry->input[numloop]->op}{$entry->input[numloop]->op}{/if}
				{/section}
			{else}
				{if $entry->smarty_eval == '1'}{eval var=$entry->input}{else}{$entry->input}{/if}
			{/if}
			{if $entry->helptext != ''}&nbsp;<a href="javascript:fbht('{$entry->field_helptext_id}')"><img src="modules/FormBuilder/images/info-small.gif" alt="Help" /></a>
					<span id="{$entry->field_helptext_id}" style="display:none" class="fbr_helptext">{$entry->helptext}</span>{/if}
			{if $entry->valid == 0} &lt;--- {$entry->error}{/if}
			{if $entry->needs_div == 1}
				</div>
			{/if}
			{/strip}
		{/if}
	{/foreach}
	{if isset($has_captcha) && $has_captcha == 1}
		<div class="captcha">{$graphic_captcha}{$title_captcha}<br />{$input_captcha}</div>
	{/if}
	<div class="submit">{$prev}{$submit}</div>
	</div>
	{$fb_form_end}
{/if}
{$fb_form_footer}

Offline

#11 28. November 2019 09:05

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.300

Re: Formbuilder Captcha Fehlerausgabe im Formular

Geh mal Deine Seitentemplates/Inhalte durch.
Ich vermute Du hast den Formbuilder doppelt.
Einmal im Inhalt und einmal im Template.
Eines davon steht vermutlich in Kommentaren.
Dummerweise wird genau das, was in Kommentaren steht beim Absenden des Formulars angesteuert. Stichworte "Inline" vs. "Standard Inhaltsblock".

Offline

#12 03. Dezember 2019 13:33

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 782
Webseite

Re: Formbuilder Captcha Fehlerausgabe im Formular

Hallo!

Vielen Dank, ich hab jetzt das Formular auf "inline" gestellt - nun funktioniert es - grundsätzlich.

Jedoch springt er mir bei falsch ausgefüllten Captcha wieder nach oben an den Start der Seite.
Wo kann ich einstellen, dass er mir bei einem Fehler zu einem anchor springt?

Vielen Dank!

Offline

#13 06. Dezember 2019 13:31

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.300

Re: Formbuilder Captcha Fehlerausgabe im Formular

Wo kann ich einstellen, dass er mir bei einem Fehler zu einem anchor springt?

Das kann man nirgends einstellen.
Das ist normal, wenn eine Seite neu geladen wird.
Du kannst das lediglich via Javascript steuern.
Entweder Du hängst vor dem Absenden des Formulars noch einen Anker hintendran.
Oder Du prüfst beim Laden der Seite, ob die Seite geladen wurde, weil das Formular gerade abgesendet wurde und wenn ja, lässt Du einfach zu der Stelle scrollen, wo sich das Formuar befindet.

Offline

#14 09. Dezember 2019 22:52

brandy
Server-Pate
Registriert: 05. Juni 2011
Beiträge: 782
Webseite

Re: Formbuilder Captcha Fehlerausgabe im Formular

Hab mich schlecht ausgedrückt - klar kann man dies nicht einfach einstellen.

Meine Frage wäre, ob ich es z.B. beim form action-Tag dazugeben kann - also quasi

Da es ein One-Pager ist, sollte es ja kein Problem sein.
Wo findet man den form-Tag?

Offline

#15 12. Dezember 2019 15:02

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.300

Re: Formbuilder Captcha Fehlerausgabe im Formular

Da es ein One-Pager ist, sollte es ja kein Problem sein.
Wo findet man den form-Tag?

Und genau da liegt das Problem.
Der Form-Tag lautet im Template {$fb_form_start}.
Und er gibt mehr aus, als nur <form action="...">.
Da kommen dann noch ein paar hidden-Fields dazu, in denen Anweisungen an das CMS stehen, damit es auch weiß, wem dieses Formular gilt, und damit dieser jemand weiß was er damit machen soll.
Da wirst Du einen Anker nur mit Änderungen am Modul oder im Template mit RegexReplace hinzufügen können.
Letzteres ginge so:

{$fb_form_start|regex_replace:'@action=[\'"]([^\'^"]+)[\'"]@i':'action="$1#DEIN_ANKER"'}

Offline