Форма проверки электронной почты api

Каков наилучший способ обработки проверки электронной почты на стороне сервера в API формы?
Может ли он быть реализован где-то внутри части описанной ниже формы или есть другие варианты?

 $form['address']['mail'] = array(
   '#type' => 'textfield',
   '#title' => t('E-mail'),
   '#required' => TRUE,
   '#default_value' => $subscription->mail,
   '#maxlength' => 255,
 ); 

 $form['submit'] = array(
   '#type' => 'submit',
   '#value' => t('Versturen'),
 );

 return $form;
}
9 голосов | спросил JurgenR 16 J0000006Europe/Moscow 2011, 19:56:42

6 ответов


4

Создайте функцию проверки для вашей формы. Вот пример использования вашей формы. Например, скажем, что ваш код формы находится в функции под названием my_email:

<?php
function my_email() {
  $form = array();

  $form['address']['mail'] = array(
   '#type' => 'textfield',
   '#title' => t('E-mail'),
   '#required' => TRUE,
   '#default_value' => $subscription->mail,
   '#maxlength' => 255,
  ); 

  $form['submit'] = array(
   '#type' => 'submit',
   '#value' => t('Versturen'),
  );

  return $form;
}

function my_email_validate($form, &$form_state) {
  // YOUR CUSTOM VALIDATION CODE GOES HERE
 if (!valid_email_address($mail)) {
   form_set_error('submitted][email_address', t('The email address appears to be invalid.'));
   }
}

function my_email_submit($form, &$form_state) {
  // YOUR CUSTOM SUBMIT CODE GOES HERE
}
?>

Эта функция позволит вам написать собственный код, чтобы определить, действительны ли значения, введенные в ваши поля. Вы также можете добавить пользовательскую функцию отправки для своей формы для выполнения пользовательского кода во время отправки формы.

Подробнее о проверке форм на Проверка форм , отправке форм на Отправка форм или прочитайте всю статью для лучшего понимания API форм: Руководство по быстрому запуску API API

ответил Laxman13 16 J0000006Europe/Moscow 2011, 20:06:04
3

Разъяснение здесь: http://drupal.org/node/279127

<?php
$mail = $form_values['submitted_tree']['email_address'];
if (!valid_email_address($mail)) {
  form_set_error('submitted][email_address', t('The email address appears to be invalid.'));
}
?>
ответил artfulrobot 18 J000000Monday11 2011, 13:25:52
3

Вместо добавления обработчика проверки формы в форму вы можете добавить обработчик проверки на элемент формы, который должен быть проверен: используйте # element_validate , который принимает массив обработчиков проверки, которые будут применены к элементу формы.

$form['email'] = array(
  '#type' => 'textfield',
  '#title' => 'Email',
  '#required' => TRUE,
  '#element_validate' => array('myelement_email_validate')
);

Обработчик проверки получает три аргумента: проверяемый элемент формы, массив $form_state и $form для формы, содержащей элемент формы. Обработчик проверки должен вызывать form_error () или form_set_error () , чтобы сообщить о любой ошибке проверки.

function myelement_email_validate($element, &$form_state, $form) {
  $value = $element['#value'];
  if (!valid_email_address($value)) {
    form_error($element, t('Please enter a valid email address.'));
  }
}
ответил nmeegama 23 AM00000090000001631 2013, 09:28:16
0

Вы можете просто использовать модуль Elements и просто использовать поле «emailfield» в #type свойство элемента формы, точно так же:

 $form['YOUR_FIELD_KEY'] = array(
    '#type' => 'emailfield',
    '#title' => t('Email'),
    '#size' => 20,
    '#maxlength' => 20,
    '#description' => t('Enter a valid email'),
    '#required' => TRUE,
  );

Просто, что легко с элементами модуля, сделать пользовательскую проверку для простого поля электронной почты не имеет смысла, вам не нужно изобретать колесо ...

ответил SsouLlesS 24 +04002014-10-24T09:07:22+04:00312014bEurope/MoscowFri, 24 Oct 2014 09:07:22 +0400 2014, 09:07:22
0

Установите поле электронной почты и исправьте его с помощью

ответил Roger 14 MarpmMon, 14 Mar 2016 12:53:42 +03002016-03-14T12:53:42+03:0012 2016, 12:53:42
-1

Адрес электронной почты может быть проверен с помощью обработчика формы.

Если функция your_form определяет вашу форму, то обработчик проверки по умолчанию будет your_form_validate или иначе вы также можете установить его вручную

 $form['#validate'] = array('callback_to_validate');


 function your_form_validate($form, $form_state){
   if(!filter_var($form_state['values']['mail'], FILTER_VALIDATE_EMAIL))
     form_set_error('email', t('Invalid Email Address'))
 }
ответил Shoaib Nawaz 16 J0000006Europe/Moscow 2011, 20:21:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132