diff --git a/captcha.module b/captcha.module index cc0432c..dba5a4f 100644 --- a/captcha.module +++ b/captcha.module @@ -216,12 +216,20 @@ function captcha_element_process($element, &$form_state, $complete_form) { '#value' => $captcha_sid, ); - // Additional one time CAPTCHA token: store in database and send with form. - $captcha_token = md5(mt_rand()); - db_update('captcha_sessions') - ->fields(array('token' => $captcha_token)) + $captcha_token = db_select('captcha_sessions', 'c') + ->fields('c', array('token')) ->condition('csid', $captcha_sid) - ->execute(); + ->execute() + ->fetchField(); + if (!isset($captcha_token) && !$form_state['submitted']) { + // Additional one-time CAPTCHA token: store in database and send with form. + $captcha_token = md5(mt_rand()); + db_update('captcha_sessions') + ->fields(array('token' => $captcha_token)) + ->condition('csid', $captcha_sid) + ->execute(); + } + $element['captcha_token'] = array( '#type' => 'hidden', '#value' => $captcha_token,