public function validateUserInput() { if (Str::nullOrEmpty($this->name)) { $this->addError("generic.error.missingRequiredField", array('field' => 'name'), 'name'); } if (Str::nullOrEmpty($this->contents)) { $this->addError("generic.error.missingRequiredField", array('field' => 'contents'), 'contents'); } if (Str::nullOrEmpty($this->blogId)) { $this->addError("generic.error.missingRequiredField", array('field' => 'blogId')); } // check captcha if (!Str::nullOrEmpty($this->captchaChallenge)) { $resp = ReCaptcha::recaptcha_check_answer(self::CAPTCHA_PRIVATE_KEY, $_SERVER["REMOTE_ADDR"], $this->captchaChallenge, $this->captchaResponse); if ($resp->is_valid) { // DAY is in milliseconds, convert to seconds and multiply by 14 for 2 weeks $expireTime = time() + GlobalConstants::DAY / 10 * 14; setcookie(self::CAPTCHA_COOKIE_NAME, true, $expireTime, '/'); } else { $this->addError($resp->error); } } elseif (!isset($_COOKIE[self::CAPTCHA_COOKIE_NAME])) { $this->addError("Captcha does not appear to be functioning properly, please contact site administrator."); } }
/** * Check if a captcha value is valid * * @access public * @return bool return validity of captcha value */ function check() { $recaptcha = jaws()->request->fetch(array('recaptcha_challenge_field', 'recaptcha_response_field'), 'post'); if ($recaptcha['recaptcha_response_field']) { $privatekey = $GLOBALS['app']->Registry->fetch('reCAPTCHA_private_key', 'Policy'); $objReCaptcha = new ReCaptcha(); $objReCaptcha->recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $recaptcha['recaptcha_challenge_field'], $recaptcha['recaptcha_response_field']); return $objReCaptcha->is_valid; } return false; }