Пример #1
0
 /**
  * Validates the supplied data against the options rules
  *
  * @param array		$data
  * @param array		$rules
  * @param array		$messages
  *
  * @param mixed
  */
 public function validateData(array $data, array $rules, array $messages)
 {
     if ($rules) {
         $this->customValidator->setData($data);
         $this->customValidator->setRules($rules);
         $this->customValidator->setCustomMessages($messages);
         //if the validator fails, kick back the errors
         if ($this->customValidator->fails()) {
             return implode('. ', $this->customValidator->messages()->all());
         }
     }
     return true;
 }
 /**
  * Check the hidden captcha's values
  *
  * @param array $values Posted values
  * @param integer $minLimit [optional] Submission minimum time limit in seconds (default = 0)
  * @param integer $maxLimit [optional] Submission maximum time limit in seconds (default = 1200)
  * @return boolean
  */
 public static function check($values, $minLimit = 0, $maxLimit = 1200, Validator $validator)
 {
     // Check post values
     if ($values === null || !isset($values['token']) || !isset($values['name'])) {
         $validator->setCustomMessages(['hiddencaptcha' => trans('hiddencaptcha::error.novalues')]);
         return false;
     }
     // Hidden field is set
     if ($values['name'] !== '') {
         $validator->setCustomMessages(['hiddencaptcha' => trans('hiddencaptcha::error.autofill')]);
         return false;
     }
     // Get the token values
     $token = Crypt::decrypt($values['token']);
     $token = @unserialize($token);
     // Token is null or unserializable
     if (!$token || !is_array($token) || empty($token)) {
         $validator->setCustomMessages(['hiddencaptcha' => trans('hiddencaptcha::error.token')]);
         return false;
     }
     // Check time limits
     $now = time();
     if ($now - $token['timestamp'] < $minLimit || $now - $token['timestamp'] > $maxLimit) {
         $validator->setCustomMessages(['hiddencaptcha' => trans('hiddencaptcha::error.time_limit')]);
         return false;
     }
     // Check the random posted field
     if (!isset($values[$token['random_field_name']])) {
         $validator->setCustomMessages(['hiddencaptcha' => trans('hiddencaptcha::error.random_field')]);
     }
     // Check if the random field value is similar to the token value
     $randomField = $values[$token['random_field_name']];
     if (!ctype_digit($randomField) || $token['timestamp'] != $randomField) {
         $validator->setCustomMessages(['hiddencaptcha' => trans('hiddencaptcha::error.random_field_value')]);
         return false;
     }
     // Check token values
     if (!isset($token['session_id'], $token['ip'], $token['user_agent']) && $token['session_id'] !== session_id && $token['ip'] !== Request::ip() && $token['user_agent'] !== $_SERVER['HTTP_USER_AGENT']) {
         $validator->setCustomMessages(['hiddencaptcha' => trans('hiddencaptcha::error.invalid_token')]);
         return false;
     }
     // everything is ok, return true
     return true;
 }