/** * Checks if a Captcha string matches the Captcha attached to the comment post * Returns true if there is a match. * * @param string $key * @param string $mollom_session * @param string $code_ok * @return bool */ function checkCaptcha($mollom_session, $code_ok) { // set keys Mollom::setPublicKey(getOption('public_key')); Mollom::setPrivateKey(getOption('private_key')); $servers = Mollom::getServerList(); Mollom::setServerList($servers); if (!Mollom::checkCaptcha($mollom_session, $code)) { return false; } query('DELETE FROM ' . prefix('captcha') . ' WHERE `ptime`<' . (time() - 3600)); // expired tickets $result = query('DELETE FROM ' . prefix('captcha') . ' WHERE `hash`="' . $mollom_session . '"'); $count = mysql_affected_rows(); return $count == 1; }
public static function check($code) { self::prepare(); try { if (Mollom::checkCaptcha(Session::get('mollom/sessionid'), $code)) { Session::delete('mollom/sessionid'); return null; } else { return self::createCaptcha(); } } catch (Exception $e) { return new MollomInvalidConfigCaptcha; } }
public function action_mollom_fallback(SuperGlobal $handler_vars, Comment $comment) { if (!empty($handler_vars['mollom_captcha']) && !empty($comment)) { if (Mollom::checkCaptcha($comment->info->mollom_session_id, $handler_vars['mollom_captcha'])) { $comment->status = 'unapproved'; $comment->insert(); $anchor = '#comment-' . $comment->id; Utils::redirect($comment->post->permalink . $anchor); exit; } else { Session::error(_t('Sorry, that answer was incorrect. Please try again.', 'mollom')); $this->send_captcha($comment); exit; } } elseif (empty($comment)) { die(_t('Sorry, the gremlins ate your comment...', 'mollom')); } else { $this->send_captcha($comment); exit; } }