Ich hänge mich hier mal an, weil ich mit der Sicherheitsabfrage in Contao 4.6 auch Probleme habe.
In meiner Erweiterung erzeuge ich ein Frontend-Formular mit Sicherheitsabfrage. Auszug aus dem Code:
PHP-Code:
$fields['captcha'] = array(
'name' => 'captcha',
'inputType' => 'captcha',
'eval' => array('mandatory'=>true)
);
// ...
foreach ($fields as $arrField) {
$strClass = $GLOBALS['TL_FFL'][$arrField['inputType']];
$arrField['eval']['required'] = $arrField['eval']['mandatory'];
$objWidget = new $strClass($this->prepareForWidget($arrField, $arrField['name'], $arrField['value']));
// Validate widget
if ($this->Input->post('FORM_SUBMIT') == 'caledit_submit') {
$objWidget->validate();
if ($objWidget->hasErrors()) {
$doNotSubmit = true;
}
}
$arrWidgets[$arrField['name']] = $objWidget;
}
Unter Contao 4.4 läuft das durch, mit 4.6 wird eine korrekt beantwortete Sicherheitsabfrage als falsch markiert.
Auszug aus dem Template
PHP-Code:
<div class="formbody">
<form action="<?php echo $this->action; ?>" method="post">
<input type="hidden" name="FORM_SUBMIT" value="caledit_submit" /><?php echo $this->messages; ?>
<input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}">
<table cellpadding="2" cellspacing="2" border="0" >
<tbody>
<?php if ($this->fields['captcha']): ?>
<?php $objWidget = $this->fields['captcha']; ?>
<tr class="<?php echo $class; ?>">
<td class="label">
<?php echo $objWidget->generateQuestion();
echo '<span class="mandatory">*</span>';?></td>
<td class="value"><?php echo $objWidget->generateWithError(); ?></td>
</tr>
<?php endif; ?>
<tr class="<?php echo $class; ?>">
<td class="label"> </td>
<td class="value"><input type="submit" class="submit" value="<?php echo $this->submit; ?>" /></td>
</tr>
</tbody>
</table>
</form>
</div>
Wenn ich das Captcha-Feld im Code auskommentiere, funktioniert das Formular wie gewünscht.
Zu den Kommentaren: Wenn ich in 4.4 und auch in 4.6 ein Kommentarmodul anlege, und die Sicherheitsabfrage nicht deaktiviere (also standard), mit den Standard-Templates, dann wird mir auch keine Sicherheitsabfrage angezeigt. Wie läuft das da? Irgendeine Bot-Erkennung im Hintergrund, die "vermutlich echten Menschen" die Abfrage erspart? Und wie kann ich mein selbst erstelltes Formular in meiner Erweiterung vor Spam schützen? Und seit wann geht das so? In den Changelogs zwischen 4.4 und 4.6 finde ich nichts zu den Captchas ...
Lesezeichen