Raketenwissenschaftler: SPAM bei Anmeldungen EXTREM

Beitrag lesen

Allererste Maßnahme:

Sodann:

  • preg_match kann sehr hilfreich sein und solche Einträge erkennen. Allerdings wirst Du feststellen, dass die Regeln durch solche Eingaben immer komplizierter werden und zu false positives führen.

Man kann auch sowas machen: (Den Code habe ich live geschrieben um eine Möglichkeit zu zeigen. Er ist überwiegend wahrscheinlich fehlerhaft.)

<?php

# Beim Formular senden:

$arZahlen  = [ 'Null', 'Eins',, 'Neun' ];
$arOps     = [ 'plus', 'minus', 'mal' ];

$z1 = rand( 0, 9 );
$z2 = rand( 0, 9 );
$op = rand( 0, 2 );

session_start();

switch ( $op ) {
    case 0:
         $_SESSION['hint'] =  $z1 + $z2;
         break;
    case 1:
         $_SESSION['hint'] =  $z1 - $z2;
         break;
    case 2:
         $_SESSION['hint'] =  $z1 * $z2;
         break;
}

$hintText =  $arZahlen[$z1] 
          . ' '
          . $arOps[$op]
          . ' '
          . $arZahlen[$z2]
          . '?';
?>
<form method="POST" ><label><?=$hintText;?>
<input type="text" name="hint" value=""></input>
</label></form>

Beim Empfangen:

<?php
session_start();
if ( intval( $_POST['hint'] ) !==  $_SESSION['hint'] ) {
    trigger_error(
      'Mach hier was Du willst...',
      E_USER_NOTIZE
    );
}