Drupal user_save()重复电子邮件地址

时间:2010-12-17 15:04:44

标签: drupal drupal-6

我有一个模块,我尝试创建一些用户。

$newUser = array(
        'name' => "Bob",
        'pass' => "pass",
        'mail' => "a@a.com",
        'status' => 1,
        'init' => "a@a.com"
);
$newUserObject = user_save(null, $newUser1);

如果一个用户已经准备好使用相同的邮件地址创建,我没有得到 false ,我得到了所有准备好的用户对象。有什么方法可以让我告诉用户已经准备就绪。

3 个答案:

答案 0 :(得分:4)

在尝试创建用户之前,您可以尝试使用电子邮件地址调用user_load,以查看它是否返回用户对象。这是一个例子(borrowed from here):

//search by email
$account = user_load(array('mail' => check_plain($email)));
if ($account->uid) {
  //user found
} else {
  //user NOT found
}

答案 1 :(得分:0)

您可以在创建用户之前尝试搜索用户。假设drupal 6:

user_search('search', {email}, TRUE);

或者直接查询并查看查询是否返回FALSE

db_result(db_query('SELECT name FROM {users} WHERE LOWER(mail) = LOWER('%s'), $email));

http://api.drupal.org/api/drupal/modules--user--user.module/function/user_search/6

答案 2 :(得分:0)

要在drupal 7中执行此操作,您需要使用不同的功能,如下所示。

//search by email
$account = user_load_by_mail(check_plain($old_user['email_address']));
if ($account->uid) {
  //user found
} else {
  //user NOT found
}

因为this是D7的功能