簡體   English   中英

Drupal驗證表

[英]drupal validate form

我想在將表單輸入保存到數據庫之前驗證表單的輸入,以防止Sql Injection和XSS。

我不想直接修改模塊的代碼,所以我創建了一個自定義模塊來執行此類操作,但是我不確定如何使用#validate元素來調用驗證函數。

在我的自定義模塊中,我通過以下邏輯實現了此功能:

function mymodule_form_alter(&$form, $form_state, $form_id) {

  switch ($form_id) {
    case 'myform':
      drupal_set_message('this message is printed :D');
      $form['#validate'] = array('my_validation_function');
    break;
  }        
}

function my_validation_function($form, &$form_state) {

  drupal_set_message('not printed :(');
  watchdog('not printed :___(', 'not printed :___(');

}

我不知道它是如何工作的,但是當我提交表單時,似乎從未調用過第二個函數。

編輯(解決方案):

我終於找到了驗證在模塊中的放置位置:

$form['mod_name']['submit']['#validate'][] = 'my_validation_function';

我以為,盡管$ form變量中包含了內容,但僅添加form ['#validate']還是可以的,但是如果您不將#validate元素放置在期望的位置,則似乎取決於模塊的實現,它會被忽略。

請小心替換#validate密鑰,因為您將替換之前已添加的任何其他驗證器。

最好在其上附加功能;

$form['#validate'][] = 'my_validation_function';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM