Saya membuat pengguna secara terprogram seperti ini:
$newUser = array(
'name' => $mail,
'pass' => 'password', // note: do not md5 the password
'mail' => $mail,
'status' => 1,
'init' => $mail,
'roles' => array(5)
);
$user = user_save(null, $newUser);
Saya mendapat peran dengan ID peran sama dengan lima; ketika saya membuat pengguna, dalam tabel "users_roles" hanya ada satu baris dengan nilai 0 untuk ID peran, tetapi jika saya mencetak objek pengguna dengan var_dump()
, sepertinya peran dibuat.
Apa yang saya lakukan salah?
array($role_id => 'anything')
Jawaban:
Kode ini berfungsi untuk saya:
sumber
user_save
akan membereskannyauser_save()
argumen kedua, ia akan di-hash. Jika Anda melakukannyauser_save($account)
tanpa$edit
argumen, maka konversi md5 tidak terjadi. Jawaban oleh @SMTF di bawah ini menunjukkan ini.Ini adalah contoh yang saya temukan di sebuah situs.
sumber
user_hash_password('bar');
salahuser_save()
gagal untuk hash kata sandi sebelum menyimpannya (dalam pengalaman saya sendiri dan saya melihat orang lain di web juga mengalaminya sesekali). Saya tidak tahu mengapa (tapi saya ingin!). Dalam kasus-kasus ini, meneleponuser_hash_password()
sepertinya perlu.user_hash_password()
dipanggil secara manual. Ini karena tidak lewat$edit
ke Internetuser_save()
. Jika kode termasuk$edit = array('pass' => 'bar');
(yang jawaban ini tidak) maka alih-alih melakukan$account->pass = user_hash...
Anda dapat melakukanuser_save($account, $edit);
danuser_save()
akan melakukan hashing untuk Anda.Untuk secara pemrograman membuat pengguna dengan peran dan nilai-nilai bidang khusus (seperti misalnya Nama Depan dan Nama Belakang) Anda dapat menggunakan kode berikut:
Lihat posting blog ini dan komentarnya untuk perincian lebih lanjut: http://codekarate.com/blog/create-user-account-drupal-7-programmatically
sumber
Untuk membuat pengguna secara terprogram dari alamat email, coba ini:
sumber
Untuk membuat pengguna secara terprogram:
sumber