আমি কীভাবে ব্যবহারকারীদের পাসওয়ার্ডগুলি দ্রুপাল 6 থেকে দ্রুপাল 7 এ স্থানান্তর করব?


20

আমি একটি ড্রুপাল 6 থেকে একটি দ্রুপাল 7 সাইটে ব্যবহারকারীদের স্থানান্তরিত করার চেষ্টা করছি। আমার সমস্যাটি হ'ল এমডি 5 থেকে তাদের পাসওয়ার্ড কীভাবে হ্যাশ হয়ে যাবে (ডি 7 দ্বারা ব্যবহৃত)।
যদি আপনার কোন ধারণা আছে?

উত্তর:


11

এমড 5 পাসওয়ার্ডটি হ্যাশ করাতে একটিতে আপডেট করতে আমার ইউজার_হ্যাশ_প্যাসওয়ার্ড () এবং সংক্ষিপ্ত একটি 'ইউ' ব্যবহার করতে হবে। এখানে এটি তৈরি করার জন্য যে স্ক্রিপ্টটি ব্যবহার করেছি।

<?php
        require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
        $res = db_query('select * from drupal.users');

        if($res) {
                foreach ($res as $result) {
                        $hashed_pass = user_hash_password($result->pass, 11);
                        if ($hashed_pass) {
                          $hashed_pass  = 'U' . $hashed_pass;
                          db_update('users')->fields(array('pass' => $hashed_pass))->condition('uid', $result->uid)->execute();
                        }
                }
        }

তখন আমি দৌড়ে গেলাম

drush scr <name_of_the_script_file>

এবং এটা কাজ করে.


11 কি পুনরাবৃত্তি হিসাবে একটি মান ডি 6 জিনিস গণনা করে?
Sam152


5

দ্রুপাল from থেকে দ্রুপাল to এ ব্যবহারকারীদের স্থানান্তর করতে যদি কারও যদি স্বতন্ত্র পিএইচপি স্ক্রিপ্টের প্রয়োজন হয় তবে তা এখানে:

  <?php
    /*
    Standalone PHP script to migrate users from Drupal 6 to Drupal 7 programatically.
    Date: 9-4-2012
    */

    // set HTTP_HOST or drupal will refuse to bootstrap
    $_SERVER['HTTP_HOST'] = 'example.org';
    $_SERVER['REMOTE_ADDR'] = '127.0.0.1';


    //root of Drupal 7 site
    $DRUPAL7_ROOT="/var/www/ace";
    define('DRUPAL_ROOT',$DRUPAL7_ROOT);
    chdir($DRUPAL7_ROOT);
    require_once "./includes/bootstrap.inc";
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    require_once "./includes/password.inc";

    //connect to Drupal 6 database
    //syntax:mysqli(hostname,username,password,databasename);
    $db= new mysqli('localhost','ace6','ace6','ace6');
    if(mysqli_connect_errno())  {
        echo "Conection error. Could not connect to Drupal 6 site!";
        exit;
    }

    //get users from Drupal 6 database
    $query="select * from users";
    $result=$db->query($query);
    //count number of users
    $num_results=$result->num_rows;
    for($i=0;$i<$num_results;$i++){

        //fetch each row/user
        $row=$result->fetch_assoc();

        //migrate only active users
        if($row['status']==1){

            //convert password from Drupal 6 style to Drupal 7 style
            $hashed_pass='U'.user_hash_password($row['pass'],11);

            //check if user with same email address already exists in Drupal 7 database, if it does, do not migrate
            if (!user_load_by_mail($row['mail'])) {
                $account = new stdClass;
                $account->is_new = TRUE;
                $account->name = $row['name'];
                $account->pass = $hashed_pass;
                $account->mail = $row['mail'];
                $account->init = $row['mail'];
                $account->status = TRUE;
                $account->roles = array(DRUPAL_AUTHENTICATED_RID => TRUE);
                $account->timezone = variable_get('date_default_timezone', '');
                //create user in Drupal 7 site 
                user_save($account);
                //print message
                echo "User acount ".$row['name']." has been created\n";
            }
        }

    }
    ?>

আপনি কোথায় দয়া করে উল্লেখ করতে পারেন?
রুটিকাল ভি।

1
@ রুটিকাল ভি আপনি এই স্ক্রিপ্টটি যে কোনও অবস্থান থেকে কমান্ড লাইনের মাধ্যমে চালাতে পারবেন যে আপনি স্ক্রিপ্টে সঠিক পথ এবং ডাটাবেস শংসাপত্র রেখেছেন।
অজিংক্যা কুলকারনী

2

ঠিক আছে, আপনি আপগ্রেড করলে আপনার পাসওয়ার্ডগুলি ঠিক আছে। আমার ধারণা আপনি সম্ভবত আপগ্রেড কোডটি দেখতে পারেন তারা কীভাবে তা করে তা দেখতে।

তবে, আপনি যদি কেবল ব্যবহারকারীদের স্থানান্তরিত হন তবে সম্ভবত সবচেয়ে সম্ভাব্য উপায়টি হ'ল সকলকে এক-সময় লগইন লিঙ্কগুলি প্রেরণ করা এবং তাদের পাসওয়ার্ডগুলি পুনরায় সেট করার জন্য।


আমি শুধু লক্ষ্য করেছি যে, drupal.org/project/login_one_time views_bulk_operations সাথে সমন্বয়, তাই আপনি যদি বাতিল পাসওয়ার্ড যাচ্ছি, এই তাদের পুনঃ-প্রতিষ্ঠা করতে একটি দুর্দান্ত উপায় হতে পারে।
rfay

0

যদি আমি এটি ডি 7 সাইটে ডেভেল / পিএইচপি থেকে চালাতাম তবে আমি কেবল আমার প্রয়োজনীয়টি পেয়েছি:

require_once "./includes/password.inc";

//connect to Drupal 6 database
//syntax:mysqli(hostname,username,password,databasename);
$db= new mysqli('localhost','ace6','ace6','ace6');
if(mysqli_connect_errno())  {
    echo "Conection error. Could not connect to Drupal 6 site!";
    exit;
}

//get users from Drupal 6 database
$query="select * from users";
$result=$db->query($query);
//count number of users
$num_results=$result->num_rows;
for($i=0;$i<$num_results;$i++){

    //fetch each row/user
    $row=$result->fetch_assoc();

    //migrate only active users
    if($row['status']==1){

        //convert password from Drupal 6 style to Drupal 7 style
        $hashed_pass='U'.user_hash_password($row['pass'],11);

        //check if user with same email address already exists in Drupal 7 database, if it does, do not migrate
        if (!user_load_by_mail($row['mail'])) {
            $account = new stdClass;
            $account->is_new = TRUE;
            $account->name = $row['name'];
            $account->pass = $hashed_pass;
            $account->mail = $row['mail'];
            $account->init = $row['mail'];
            $account->status = TRUE;
            $account->roles = array(DRUPAL_AUTHENTICATED_RID => TRUE);
            $account->timezone = variable_get('date_default_timezone', '');
            //create user in Drupal 7 site 
            user_save($account);
            //print message
            echo "User acount ".$row['name']." has been created\n";
        }
    }

}

উভয় সাইট একই ওয়েব সার্ভারে ছিল।


আপনি নিজে হাতে পাসওয়ার্ড পরিবর্তন করতে বেছে নিয়েছেন। এটি মাইগ্রেশন মডিউল দ্বারাও করা যেতে পারে$this->destination = new MigrateDestinationUser(array('md5_passwords' => TRUE)); ... $this->addFieldMapping('pass', 'source_password');
Neographic734
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.