Drupal 7 开发内部培训资料, 分头诗人

Drupal 6 通过代码创建用户?

猪跑啦独家原创专稿,欢迎您转载本文,转载请注明来源。

Drupal 7请移步到 Drupal 7  通过代码创建用户?

很多情况下,我们需要在对某一动作操作时候,需要自动的创建用户,如ubercart中购买产品时候,如没登陆,自动创建用户。这个是如何实现的呢?看看下面代码。

//the user name of the new user
  $user_name = "example";
 
  //the users email address
  $email = "example@example.com";
 
  //set up the user fields using a random 8 character password
  $fields = array(
    'name' => $user_name,
    'mail' => $email,
    'pass' => user_password(8),
    'status' => 1,
  );
 
  //you can give a user roles if necessary based on the role name
  $fields['roles'] = array('test_role');
 
  //the first parameter is left blank so a new user is created
  $account = user_save('', $fields);
 
  // Manually set the password so it appears in the e-mail.
  $account->password = $fields['pass'];
 
  // Send the e-mail through the user module.
  drupal_mail('user', 'register_admin_created', $email, NULL, array('account' => $account), variable_get('site_mail', 'noreply@example..com'));

 

上面代码基本实现了如何在Drupal 6中通过代码创建用户,但很多时候,用户是有用到 user profile的,就是说有一些附加的字段,那该如何做?看看下面代码:

 

require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
$user_name = 'my_name';
$email = 'my_name@domain.com';
...
 
$fields = array(
   'name' => $user_name,
   'mail' => $email,
   'pass' => $user_password,
   'status' => 1,
 
   );
$account = user_save('', $fields);
 
if ($account != NULL ) {
  echo "user Id: $account->uid";
$profile_node = content_profile_load('bio', $account->uid, true);
 
if ($profile_node != NULL) {
    echo "node Id: $node_ref->nid";
    return array(
        0 => array('nid' => $profile_node->nid ),
        // 0 => array('USER ONE' => $user_data->field_last_name[0]['value']),
    ); 
    //it's a published node, 0 if it's un published
    $profile_node->status = 1;
    $profile_node->title = $account->name;
    //1 is promote to home page, 0 is not to promote on home page
    $profile_node->promote = 0;
    $profile_node->uid = $account->uid;
    $profile_node->format = 1; //filtered HTML
    $profile_node->field_emp_id[0]['value'] = '55555';
    $profile_node->field_first_name[0]['value']= 'user1';
    $profile_node->field_last_name[0]['value'] = 'USER ONE';
    $profile_node->field_title[0]['value']= 'Engineer';
 
    if ($profile_node = node_submit($profile_node)) {
        //saves the node
        node_save($profile_node);
     }
 
else {
    echo " no user data found!";
}
}