diff --git a/inc/anti-bot.php b/inc/anti-bot.php index 9e3ffeb2..81afca1b 100644 --- a/inc/anti-bot.php +++ b/inc/anti-bot.php @@ -243,22 +243,24 @@ function checkSpam(array $extra_salt = array()) { if ($hash != $_hash) return true; - $query = prepare('UPDATE `antispam` SET `passed` = `passed` + 1 WHERE `hash` = :hash'); + $query = prepare('SELECT `passed` FROM `antispam` WHERE `hash` = :hash'); $query->bindValue(':hash', $hash); $query->execute() or error(db_error($query)); - if ($query->rowCount() == 0) { + if (($passed = $query->fetchColumn(0)) === false) { // there was no database entry for this hash. most likely expired. return true; } - $query = prepare('SELECT `passed` FROM `antispam` WHERE `hash` = :hash'); - $query->bindValue(':hash', $hash); - $query->execute() or error(db_error($query)); - $passed = $query->fetchColumn(0); - if ($passed > $config['spam']['hidden_inputs_max_pass']) return true; - return false; + return $hash; } +function incrementSpamHash($hash) { + $query = prepare('UPDATE `antispam` SET `passed` = `passed` + 1 WHERE `hash` = :hash'); + $query->bindValue(':hash', $hash); + $query->execute() or error(db_error($query)); +} + + diff --git a/post.php b/post.php index 11465a6e..2cbe5235 100644 --- a/post.php +++ b/post.php @@ -212,8 +212,11 @@ if (isset($_POST['delete'])) { error($config['error']['noaccess']); } - if (!$post['mod'] && checkSpam(array($board['uri'], isset($post['thread']) && !($config['quick_reply'] && isset($_POST['quick-reply'])) ? $post['thread'] : null))) - error($config['error']['spam']); + if (!$post['mod']) { + $post['antispam_hash'] = checkSpam(array($board['uri'], isset($post['thread']) && !($config['quick_reply'] && isset($_POST['quick-reply'])) ? $post['thread'] : null)); + if ($post['antispam_hash'] === true) + error($config['error']['spam']); + } if ($config['robot_enable'] && $config['robot_mute']) { checkMute(); @@ -536,6 +539,10 @@ if (isset($_POST['delete'])) { $id = post($post); + if (isset($post['antispam_hash'])) { + incrementSpamHash($post['antispam_hash']); + } + if (isset($post['tracked_cites'])) { foreach ($post['tracked_cites'] as $cite) { $query = prepare('INSERT INTO `cites` VALUES (:board, :post, :target_board, :target)');