Hier kann eine Notiz zum Merk-Eintrag hinzugefügt werden (optional)
/**
* Prüft, ob der Antispamcode richtig eingegeben wurde
* Der NoPictureMode fügt ein Hidden Feld ein, um Cross Site Request Forgery Attacken zu unterbinden, der NoPictureMode
* wird automatisch genutzt, wenn kein Bildabfrage statt findet, kann aber auch erzwungen werden
*
* @global array $allgAr
* @param string $m Modulname, um unterschiedliche Antispamfelder auf einer Seite zu ermöglichen
* @param boolean $nopictures NoPictureMode erzwingen
* @return boolean
*/
function chk_antispam($m, $nopictures = false)
{
global $allgAr;
if (!$nopictures && is_numeric($allgAr['antispam']) && has_right($allgAr['antispam'])) {
$nopictures = true;
}
$valid = false;
if ($nopictures && isset($_POST['antispam_id'])) {
$antispamId = $_POST['antispam_id'];
if (isset($_SESSION['antispam'][$antispamId]) && $_SESSION['antispam'][$antispamId]) {
$valid = true;
unset($_SESSION['antispam'][$antispamId]);
}
} elseif (isset($_POST['antispam'])
&& isset($_POST['antispam_id'])
&& isset($_SESSION['antispam'][$_POST['antispam_id']])
&& $_POST['antispam'] === $_SESSION['antispam'][$_POST['antispam_id']][$m][3]
) {
unset ($_SESSION['antispam'][$_POST['antispam_id']]);
$valid = true;
}
return $valid;
}
/**
* Erzeugt HTML Code für ein Formularfeld, welches für einen Antibot-Schutz dienen oder vor CSFR Attacken schützen soll
* Beschreibung zum NoPictureMode bitte der chk_antispam Funktion entnehmen
*
* @global array $allgAr
* @param string $m Modulname
* @param integer $t Type, der angibt wie das Formularfeld formatiert wird (0, 1 oder > 10 als Breite für das label) siehe Code :P
* @param boolean $nopictures Erzwing NoPictureMode
* @return string
*/
function get_antispam($m, $t, $nopictures = false)
{
global $allgAr;
if (!$nopictures && $t < 0 || (is_numeric($allgAr['antispam']) && has_right($allgAr['antispam']))) {
$nopictures = true;
}
mt_srand((double)microtime()*1000000);
$id = uniqid($m, true);
$rs = '<input type="hidden" name="antispam_id" value="'.$id.'" />';
if ($nopictures) {
$_SESSION['antispam'][$id] = true;
return $rs;
}
if (is_numeric($allgAr['antispam']) && has_right($allgAr['antispam'])) {
return '';
}
if (!isset($_SESSION['antispam']) || (isset($_SESSION['antispam']) && !is_array($_SESSION['antispam']))) {
$_SESSION['antispam'] = array();
}
$_SESSION['antispam'][$m] = array();
$i1 = mt_rand (1,9);
$i2 = mt_rand (1,9);
$i3 = mt_rand (1,9);
$_SESSION['antispam'][$id][$m] = array($i1, $i2, $i3, $i1.$i2.$i3);
$rs .= '<span style="display: inline; width: 100px; vertical-align: middle; text-align: center; background-color: #000000; border: 0px; padding: 2px; margin: 0px;">'
. '<img src="include/images/spam/z.php?m='.$m.'&w=0&'.session_name().'='.session_id().'&id='.$id.'" alt="">'
. '<img src="include/images/spam/z.php?m='.$m.'&w=1&'.session_name().'='.session_id().'&id='.$id.'" alt="">'
. '<img src="include/images/spam/z.php?m='.$m.'&w=2&'.session_name().'='.session_id().'&id='.$id.'" alt="">'
. '<input name="antispam" size="3" maxlength="3" style="background-color: #FFFFFF; border: 0px; margin: 0px; padding: 0px;" /></span>';
if ($t == 0) {
return ($rs);
} elseif ($t == 1) {
return '<tr><td class="Cmite">Antispam</td><td class="Cnorm">'.$rs.'</td></tr>';
} elseif ($t > 10) {
return '<label style="float:left; width: '.$t.'px; ">Antispam</label>'.$rs.'<br />';
} else {
return '';
}
}