防止多次提交表单(服务器端)
我遇到了一个问题,用户可以多次提交由Form API构建的任何表单(快速单击会导致多个请求)。 我已经提供了禁用按钮的基本客户端(javascript)解决方案,但是我很好奇防止这种情况的最佳方法是在服务器端。 有没有推荐的方法来使用Drupal的表单令牌系统来处理此问题?特别是全局表单解决方案(即,使用hook_form_alter()向每个表单添加自定义验证器)。 到目前为止,我的方法一直是这样的: function mymodule_form_alter(&$form, &$form_state, $form_id) { $form['#validate'][] = 'mymodule_form_validate'; } function mymodule_form_validate(&$form, &$form_state){ //initialize form array if (!isset($_SESSION['submitted_forms'])){ $_SESSION['submitted_forms'] = array(); } $form_token = $form_state['values']['form_token']; if ( isset($_SESSION['submitted_forms'][$form_token]) && $_SESSION['submitted_forms'][$form_token] = TRUE ){ form_set_error('name]', 'This form has already been submitted'); } else{ $_SESSION['submitted_forms'][$form_token] = TRUE; } …