사용자가 Form API로 작성된 모든 양식을 여러 번 제출할 수있는 문제가 발생합니다 (빠른 클릭으로 여러 요청이 발생 함).
버튼을 비활성화하는 기본 클라이언트 측 (자바 스크립트) 솔루션에 넣었지만이 상황을 방지하는 가장 좋은 방법이 서버 측에 있는지 궁금합니다.
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;
}
}
form_token이 양식에 고유하지 않은 문제가 발생합니다. 어떻게 되든 그대로 유지되는 것 같습니다. 아마도 api 형식의 웅대 한 계획에서 토큰이 무엇인지 오해하고있을 것입니다.
모든 통찰력에 감사드립니다!