Проверка, существует ли пользователь уже в drupal

Когда пользователь вводит свои данные для входа, и хиты отправляют, я хочу проверить, существует ли пользователь уже или нет. Так, у меня есть следующие два вопроса 1. Какой рычаг необходим, чтобы быть реализованным для случая, когда пользователь поражает кнопку отправки в форму входа в систему. Мне нужно имя пользователя, введенное пользователем. 2. Как проверить, существует ли пользователь уже в drupal или не программно?

Некоторый пример кода действительно ценился бы. Помогите.

Спасибо.

13
задан googletorp 10 May 2010 в 15:31
поделиться

1 ответ

Это можно сделать с помощью hook_form_alter:

function module_(&$form, &$form_state, $form_id) {
  $user_login_forms = array('user_login', 'user_login_block');
  if (in_array($form_id, $user_login_forms)) {
    $form['#validate'][] = 'my_validate_function';
  }
}

function my_validate_function(&$form, &$form_state) {
  $name = $form_state['values']['name'];
  // Drupal 6:
  if (!db_result(db_query("SELECT COUNT(*) FROM {users} WHERE name = '%s';", $name))) {
    // User doesn't exist
  }
  // Drupal 7:
  if (!db_query("SELECT COUNT(*) FROM {users} WHERE name = :name;", array(':name' => $name))->fetchField()) {
    // User doesn't exist
   }
}

В этом случае лучше напрямую запросить БД, чем использовать user_load, так как он подключается и к другим модулям.

12
ответ дан 1 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

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