gpt4 book ai didi

drupal-7 - Drupal 7如何防止多次表单提交(服务器端)

转载 作者:行者123 更新时间:2023-12-02 21:38:03 26 4
gpt4 key购买 nike

这是我正在测试的工作模块代码:

/**
* @file myform.module
*/

/**
* Implements hook_menu().
*/
function myform_menu() {
$items['myform'] = array(
'title' => 'myform',
'page callback' => 'drupal_get_form',
'page arguments' => array('myform'),
'access callback' => true,
'type' => MENU_NORMAL_ITEM
);
return $items;
}

/**
* Form
*/
function myform() {
$form['Value'] = array(
'#title' => t('Value'),
'#type' => 'textfield',
'#description' => t('You may not enter the same value twice. (unless you hit enter really fast).'),
'#required' => true,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit')
);
return $form;
}

/**
* Validate
*/
function myform_validate($form, &$form_state) {
if (isset($form_state['values']['Value']) && trim($form_state['values']['Value'])!=''){
// prevent duplicates
db_set_active('test');
$r = db_query("SELECT id FROM test WHERE value = '".$form_state['values']['Value']."'");
$n = $r->rowCount();
if ($n) {
form_set_error('Value', t('This value has already been submitted.'));
}
db_set_active();
}
}

/**
* Submit
*/
function myform_submit($form, &$form_state) {

for ($i=0; $i<=10000000; $i++) {
// do nothing
}

db_set_active('test');
db_insert('test')->fields(array('value'=>$form_state['values']['Value']))->execute();
db_set_active();
}

验证 Hook 可以防止插入重复的值,除非我非常快地按下回车键或提交按钮,在这种情况下,相同的值会多次插入到数据库中。

如何防止插入重复值?

最佳答案

如果您的意思是用户不小心多次单击提交按钮,那么您应该查看 Hide submit button模块。您可以将其定义为模块的 INFO 文件中的依赖项。

关于drupal-7 - Drupal 7如何防止多次表单提交(服务器端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com