views:

109

answers:

3

I want to make a script to insert some 100 users into a Drupal 6 database - their username, mail and password hash.

After reading about the PHP class that Drupal 6 uses, I'm not sure I can pull this off. My method was to send every user a mail like "Hello, x! Your new password is y", then insert the hashed "y" into Drupal's user table.

I know Drupal returns an md5. But it doesn't just md5's the original password, but a very mixed-up password (using salt and other methods).

I've looked into the Portable PHP password hashing framework Drupal's using, but I don't think it works just with a copy+paste method.

So, my question is: can I make a PHP function that returns a valid Drupal 6 password hash to insert it into its user table?

+4  A: 

If you're creating users programmatically, you should create the plaintext password yourself, and then use the user_save() function to insert the user into the database. That function will hash and save everything for you.

Dave DeLong
Thank you. I think this is what I was looking for.
nush
@nush: Seems like you're new at StackOverflow...you might want to "accept" an answer. If you think this (or any other answer) is the "correct" answer, please click on the green checkmark underneath the question.
Sid NoParrots
+2  A: 

The existing user import module looks like it would work for bulk user importing. This does not answer your "how do I hash the password" question, but it would remove the need for a custom (probably more error prone) script.

brian_d
Thanks for the tip. I'll look into it.
nush
+1  A: 

Actually, Drupal 6 does not use any salt to calculate the hash of the password. Its just a simply md5 of the password

You can try this for your self. Set your password to something.

Calculate the md5 of your password (you can use this link http://www.miraclesalad.com/webtools/md5.php for convenience).

You will find that the hash stored in the database in the users table in the pass column will be exactly the same

This behavior for the default installation of Drupal 6 (the behavior may have changed for Drupal 7). Only if you have some special module installed will the behavior be any different for Drupal 6.

Sid NoParrots
yes, after some more code-gambling, i realized it, too. i thought different. well, md5() IS the answer to my question i guess
nush