Eigene Sicherheitsabfrage mitsamt Backend-Feld
Moin moin,
ein Kunde äußerte den Wunsch, die jetzige mathematische Sicherheitsfrage durch ein Eingabefeld zu ersetzen, wo die Menschen, die sich registrieren möchten, zunächst einen (ihnen vorher bekanntgegebenen) Code (Passwort) eingeben, um sich überhaupt registrieren zu können. Dieser Code soll für alle der gleiche sein und muss bei Bedarf geändert werden können (d.h. ein entsprechendes Feld im Modul-Backend der Registrierung müsste her). Nur bei korrekter Eingabe dieses Passworts soll eine Registrierung und zugleich automatische Freischaltung erfolgen.
Der Kunde begründet dies damit, dass er dann nicht 5000 Anmeldungen prüfen muss, sondern einfach den ca. 5000 Menschen einmalig den Code mitteilen muss. Fragt mich nicht, was einfacher / sicherer / sinnvoller wäre, ich frag mich das auch..
Jedenfalls würde diese Variante ja ebenfalls vor Spam schützen, von daher eigentlich keine sooo schlechte Idee.
Jemand nen Rat, wie ich das (updatesicher) implementiert bekomme? Ich spreche PHP nicht fließend, ganz auf den Kopf gefallen bin ich aber nicht (also verstehen tu ich das meiste, sobald ich es lese).
Herzlich liebe Grüße und auch ansonsten einen recht angenehmen Tag,
Papillon
Liste der Anhänge anzeigen (Anzahl: 1)
Im Grunde müsste ich doch diesen Link hier hernehmen und "nur ein paar Einträge" an meine Bedürfnisse anpassen: Eigene Formularfelder hinzufügen. Dort soll eine Auswahl für Reiseangebote erstellt werden, wenn ich das irgendwie in ein Textfeld umwandeln könnte und an mein Registrierungsmodul anhängen könnte, müsste ich doch weiterkommen.
Edit:
Ich bin mal diesem Tutorial gefolgt: FE-Mitglieder erweitern und kann nun im Modul auch die Code-Abfrage aktivieren. Jedoch gibt mir die install.php unentwegt "Datenbank ist nicht aktuell" aus, irgendwo läuft also etwas noch nicht ganz rund. Scheinbar gibt es die Einträger in der Datenbank ja, nur das Contao davon noch nichts mitbekommt.
Jetzt fehlt mir im Grunde nur noch die Möglichkeit, an dieses Feld eine Bedingung zu hängen: Ich möchte den einzugebenden Code im Backend-Modul für die Registrierung vorgeben können. Und nun weiß ich wirklich nicht mehr weiter.
Edit 2:
Vom Prinzip her logisch: In der Datei, die die Regisrierung und Aktivierung dann durchführt, muss irgendwo ein "if (Codeeingabe == $Codevorgabe) { do; };" eingebaut werden. Gleichzeitig muss im Backend-Modul noch ein Eingabefeld erstellt werden, welches $Codevorgabe mit Informationen versorgt.
Hier mal mein bisheriger Stand:
Anhang 4319
Liste der Anhänge anzeigen (Anzahl: 1)
Habe das Kennwort mal statt im Modul unter den Einstellungen gespeichert. Damit läuft es.
Also statt DCA/tl_modules.php eine DCA/tl_settings.php angelegt:
PHP-Code:
$GLOBALS['TL_DCA']['tl_settings']['palettes']['default'] = $GLOBALS['TL_DCA']['tl_settings']['palettes']['default'] . ';{captcha_legend},captcha_kennwort';
$GLOBALS['TL_DCA']['tl_settings']['fields']['captcha_kennwort'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_settings']['captcha_kennwort'],
'exclude' => false,
'inputType' => 'text',
'eval' => array('mandatory'=>false, 'maxlength'=>255, 'decodeEntities'=>true)
);
Und die Kennwort_Captcha.php so erweitert:
PHP-Code:
class KennwortCaptcha extends Backend {
public function Kennwort($strRegexp, $varValue, Widget $objWidget) {
$kennwort = $GLOBALS['TL_CONFIG']['captcha_kennwort'];
if ($strRegexp == 'captcha_kennwort') {
if ($varValue != $kennwort) {
$objWidget->addError('Falsches Kennwort.');
}
return true;
}
return false;
}
}
Das Ganze mal als Anlage, so wie es bei mir läuft.