Bir kullanıcı Form API tarafından oluşturulan herhangi bir formu birden çok kez (hızlı tıklama birden çok istek sonuçlanan) gönderebilirsiniz bir sorunla karşılaşıyorum.
Düğmeyi devre dışı bırakma temel istemci tarafı (javascript) çözümü koydum, ancak bu durumu önlemek için en iyi yaklaşımın sunucu tarafında ne olduğunu merak ediyorum.
Bunu gerçekleştirmek için Drupal'ın form jetonunu kullanmanın önerilen bir yolu var mı? Özellikle küresel bir form çözümü (yani, hook_form_alter () kullanarak her forma özel bir doğrulayıcı eklemek).
Benim yaklaşımım şimdiye kadar böyle bir şey oldu:
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 forma özgü değil sorun yaşıyorum - ne olursa olsun aynı kalır gibi görünüyor. Muhtemelen simgenin api formunun büyük şemasında ne olduğunu yanlış anlıyorum.
Herhangi bir fikir takdir!