Checking whether a user already exists in drupal Checking whether a user already exists in drupal php php

Checking whether a user already exists in drupal


Drupal 7 provides a function to get a user object by name :

$user = user_load_by_name($name);if(!$user){    // User doesn't exist} else {    // User exists}

http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_load_by_name/7


This can be done with 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   }}

It's better to query the DB directly in this case than than using user_load as it hooks into other modules as well.


In Drupal 7, substitute for this in the validation function:

if (!db_query("SELECT COUNT(*) FROM {users} WHERE name = :name", array(':name' => $name))->fetchField()) {  // User doesn't exist}