Bir kullanıcı zaten drupal var olup olmadığını denetleme

4 Cevap php

When a user enters his login information and hits submit, i want to check if the user already exists or not. So, i have the following two questions 1. Which hook is needed to be implemented , for the case when user hits the submit button on the login form. I need the username entered by the user. 2. How to check if a user already exists in drupal or not programmatically ?

Some sample code would be really appreciated. Please help.

Teşekkür ederiz.

4 Cevap

Bu yapılabilir 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'];
  if (!db_result(db_query("SELECT COUNT(*) FROM {users} WHERE name = '%s';", $name))) {
    // User doesn't exist
  }
}

Bu da diğer modüller takar gibi user_load kullanarak daha fazla bu durumda doğrudan DB sorgulamak için iyidir.

Drupal 7 adıyla bir kullanıcı nesnesi almak için bir fonksiyon sağlar:

$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

Siteye 7'de, doğrulama işlevi yerine bu:

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

Ben bu neredeyse 2 yaşında olduğunu biliyoruz, ama user_authenticate güzel yapar.

$existing_user = user_authenticate($name,$password);
if($existing_user)
  // user exists
else
  // user doesn't exist

Bu başkası yardımcı olur umarım.