Register_XH V.1.6 mit Patch für Captcha
Dieser Patch von Christoph M. Becker implementiert die Captcha-Abfrage des Plugins Cryptographp_XH
Hintergrund
Für den geschlossenen Benutzerbereich meiner Subdomain für die Familie, Freunde und Bekannten hat sich immer wieder ein russischer Bot angemeldet und mir so den Speicher für registrierte Benutzer voll gemüllt.
Lösung
Im Forum von CMSimple_XH habe ich um Hilfe gebeten: ist Register_XH mit captcha möglich?
Wie immer fanden sich freundliche Helfer mit guten Ideen. Letztendlich hat Christoph den Vogel abgeschossen. Er hat kurzerhand einen Patch für das Plugin Register_XH entwickelt, der die Captcha-Abfrage des Plugins Cryptographp_XH in das Registrierungsformular einbindet: https://cmsimpleforum.com/viewtopic.php?f=16&t=4744&start=60#p79462
Ich habe es ausprobiert und es funktioniert hervorragend (wenn man Cryptographp_XH installiert und nicht gerade das Backend von Register offen hat)!
Wer es sich ansehen möchte, klickt hier.
Und dort kann man sich das gepatchte Plugin herunterladen.
Wer sich testweise registrieren möchte, wird gebeten sein Benutzerkonto nach dem Test wieder zu löschen:
Sich anmelden und dann über Benutzereinstellungen den Benutzer wieder löschen.
Update
Aufbauend auf der Arbeit von Christoph M. Becker habe ich den Patch ein wenig erweitert.
Jetzt kann das gepatchte Plugin verwendet werden, ohne dass das Plugin Cryptographp_XH zwingend installiert worden sein muss.
Ist das Plugin Cryptographp_XH installiert, wird das Captcha auf dem Registrierungsformular angezeigt. Fehlt das Plugin Cryptographp_XH wird das Registrierungsformular angezeigt ohne eine Captcha-Abfrage. Es kommt zu keiner Fehlermeldung oder Absturz.
Für den Fall, dass dieser Patch nicht in das nächste Update von Register_XH einfließen wird stelle ich nachfolgend dar, welche Änderungen vorgenommen werden müssen. Die angegebenen Zeilenzahlen basieren auf der Version Register_XH-1.6.
Datei: plugins/register/classes/RegistrationController.php
Listing beginnt mit Zeile 47, ab Zeile 51 die Zeilen mit vorangestelltem + einfügen (natürlich ohne das +)
if (registerSearchUserArray($userArray, 'email', $email) !== false) {
$errors[] = $this->lang['err_email_exists'];
}
+ global $pth;
+ if (is_readable($pth['folder']['plugins'].'cryptographp/captcha.php'))
+ {
+ include_once "{$pth['folder']['plugins']}cryptographp/captcha.php";
+ if (!cryptographp_captcha_check()) {
+ $errors[] = 'Bitte korrekten CAPTCHA code eingeben.';
+ }
+ }
// generate a nonce for the user activation
$status = bin2hex($this->hasher->get_random_bytes(16));
Listing beginnt mit der ursprünglichen Zeile 159 (=neue Zeile 168), ab Zeile ursprünglich 162 (=neue Zeile 171) die Zeilen mit vorangestelltem + einfügen (natürlich ohne das +)
$view->password1 = $password1;
$view->password2 = $password2;
$view->email = $email;
+ global $pth;
+ if (is_readable($pth['folder']['plugins'].'cryptographp/captcha.php'))
+ {
+ include_once "{$pth['folder']['plugins']}cryptographp/captcha.php";
+ $view->captcha = cryptographp_captcha_display();
+ }
return (string) $view;
}
}
________________________________________
Datei: plugins/register/views/registerform.php
Listing beginnt mit Zeile 24, ab Zeile 27 die Zeilen mit vorangestelltem + einfügen
<td><?=$this->text('email')?></td>
<td colspan="2"><input class="text" name="email" type="text" size="35" value="<?=$this->email()?>"></td>
</tr>
+ <?php if (is_readable($pth['folder']['plugins'].'cryptographp/captcha.php')):?>
+ <tr>
+ <td>Captcha</td>
+ <td colspan="2"> <?=$this->captcha?></td>
+ </tr>
+ <?php endif;?>
<tr>
<td colspan="3"><input class="submit" type="submit" value="<?=$this->text('register')?>"></td>
</tr>
Name | Größe | Änderungsdatum | Hits |
---|---|---|---|
85 KB | 19.03.2021 14:52 | 28 |