Drupal 7 中文教程 简单的同步登陆 Drupal7同步Drupal6的用户

<?php

/**
 * @file
 * 当登录Drupal7站点时,检查是否在drupal6站点存在这个帐户,
 * 如果存在,将其保存到新的站点.
 */

/**
 * 实现钩子hook_form_FORMID_alter().
 */
function d6user_form_alter(&$form, &$form_state, $form_id){
  //这里我们对于表单user_login,user_login_block同时添加了一个验证器
  if($form_id == 'user_login' || $form_id == 'user_login_block'){
   $form['#validate'] = d6user_login_default_validators();
 }
}

/**
 * 我们自己的登录验证函数集合,.
 */
function d6user_login_default_validators(){
  //注意这里面保留了Drupal自带的验证器,只是在中间加上了一个自定义的验证器。这些验证器的执行存在先后顺序的
  return array('user_login_name_validate', 'd6user_user_form_validate', 'user_login_authenticate_validate', 'user_login_final_validate');
}

/**
 * 我们自己定义的登录验证函数,它在user_login_authenticate_validate前面执行.
 */
function d6user_user_form_validate($form, &$form_state){
  //form_set_error('name',t('用户名,密码不匹配.')); 这里保留了调试信息
  $name = $form_state['values']['name'];
 $pass = $form_state['values']['pass'];
 if (!empty($name) && !empty($pass)) {
   //drupal_set_message('123'); 这里保留了调试信息,用户调试代码,方便大家测试
   $account = db_query("SELECT * FROM {users} WHERE name = :name ", array(':name' => $name))->fetchObject();
  //如果用户名存在,则返回.
  if ($account) {
    return;
  }else{
   // $sql = "SELECT * FROM {users} WHERE name = :name AND pass = :pass";
   //drupal_set_message('123456');
   //我们向Drupal6站点的用户表进行查询,检查该用户是否存在。
   db_set_active('d6user');
   $account = db_query("SELECT * FROM users WHERE name = :name AND pass = :pass", array(':name' => $name, ':pass' => md5($pass)))->fetchObject();
   db_set_active('default');
   if($account){
    // drupal_set_message('1234567');
        //此时,用户帐号在Drupal6中存在,并且用户名密码正确
    $userinfo = array(
     'name' => $name,
     'pass' => $pass,
     'mail' => $account->mail,
     'init' => $name,
     'status' => 1,
     'access' => REQUEST_TIME
    );
    //我们将查询到的信息保存到Drupal7的用户表中
    $account = user_save(drupal_anonymous_user(), $userinfo);
   }
  }
 }

}

Drupal版本: