Mich hat es wahnsinnig geärgert, dass sich bei mir immer mehr automatische Registrierungen durch Bots trotz aktivierter visueller Bestätigung anhäuften...
Als ich bemerkte, dass sich die ersten sogar per E-Mail erfolgreich aktivierten, wollte ich endlich etwas dagegen unternehmen und hab mir hier im Forum verschiedene Lösungsansätze angeschaut, die mich aber alle nicht vollends überzeugt haben: Entweder waren dann die Bestätigungs-Codes nur noch schwer zu erkennen/erraten, oder die nötigen Änderungen am PHP-Code erschienen mir einfach viel zu überdimensioniert und umständlich für dieses "kleine" Problem.
Also habe ich mir in meinen Server-Logs die Registrierungen der Bots näher angeschaut, wobei mir eines aufgefallen ist: Allesamt haben sie vorher keine andere Seite besucht, sondern sind zuallererst direkt auf die Seite /profile.php?mode=register&agreed=true gegangen, um dann das Bild mit dem Bestätigungs-Code nachzuladen.
/profile.php?mode=register&agreed=true wurde in allen Fällen allerdings immer nur via GET angefordert, was mich auf eine Idee brachte: Die einfachste Lösung ist es doch, ein "true" der Variable "agreed" nur noch via POST-Übergabe zu akzeptieren. Dazu musste ich nur die folgende kleine Änderung in /includes/usercp_register.php durchführen:
###############################################
## Files To Edit: 3
## /includes/usercp_register.php
## /templates/subSilver/agreement.tpl
## /language/lang_german/lang_main.php
#
#-----[ OPEN ]--------------------------------------------
#
/includes/usercp_register.php
#
#-----[ FIND ]--------------------------------------------
#
if ( $mode == 'register' && !isset($HTTP_POST_VARS['agreed']) && !isset($HTTP_GET_VARS['agreed']) )
#
#-----[ REPLACE WITH ]------------------------------------
#
if ( $mode == 'register' && !isset($HTTP_POST_VARS['agreed']) )
#
#-----[ OPEN ]--------------------------------------------
#
/templates/subSilver/agreement.tpl
#
#-----[ FIND ]--------------------------------------------
#
<td><span class="genmed"><br />{AGREEMENT}<br /><br /><br /><div align="center"><a href="{U_AGREE_OVER13}" class="genmed">{AGREE_OVER_13}</a><br /><br /><a href="{U_INDEX}" class="genmed">{DO_NOT_AGREE}</a></div><br /></span></td>
#
#-----[ REPLACE WITH ]------------------------------------
#
<td><span class="genmed"><br />{AGREEMENT}<br /><br /><br /><div align="center"><form method="post" action="{U_AGREE_OVER13}"><input type="hidden" name="agreed" value="true"><input type="submit" class="mainoption" style="width:700px; border:2px solid" value="{AGREE_OVER_13}"></form><br /><form method="post" action="{U_INDEX}"><input type="submit" class="mainoption" style="width:700px; border:2px solid" value="{DO_NOT_AGREE}"></form></div><br /></span></td>
#
#-----[ OPEN ]--------------------------------------------
#
/language/lang_german/lang_main.php
#
#-----[ FIND ]--------------------------------------------
#
$lang['Agree_over_13'] = 'Ich bin mit den Konditionen dieses Forums einverstanden und <b>über</b> oder <b>exakt</b> 12 Jahre alt.';
#
#-----[ REPLACE WITH ]------------------------------------
#
$lang['Agree_over_13'] = 'Ich bin mit den Konditionen dieses Forums einverstanden und MINDESTENS 12 Jahre alt.';
#
#-----[ SAVE & CLOSE ALL FILES ]--------------------------
#