Tworzę użytkownika programowo takiego:
$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);
Mam rolę o identyfikatorze roli równym pięciu; kiedy tworzę użytkownika, w tabeli „users_roles” jest tylko wiersz o wartości 0 dla identyfikatora roli, ale jeśli wydrukuję obiekt użytkownika var_dump()
, wygląda to tak, jakby role zostały utworzone.
Co ja robię źle?
array($role_id => 'anything')
Odpowiedzi:
Ten kod działał dla mnie:
źródło
user_save
zajmie się tymuser_save()
drugim argumentem, będzie mieszane. Jeśli zrobisz touser_save($account)
bez$edit
argumentu, konwersja md5 nie nastąpi. Odpowiedź @SMTF poniżej to pokazuje.To przykład znalazłem na stronie.
źródło
user_hash_password('bar');
jest źleuser_save()
hasło nie jest hashowane przed ich zapisaniem (z własnego doświadczenia i widzę, że inni w sieci również go czasami doświadczają). Nie wiem dlaczego (ale chciałbym!). W takich przypadkach dzwonienieuser_hash_password()
wydaje się konieczne.user_hash_password()
się nazywać ręcznie. To dlatego, że nie przechodzi$edit
douser_save()
. Jeśli kod zawiera$edit = array('pass' => 'bar');
(czego nie ma w tej odpowiedzi), to zamiast tego$account->pass = user_hash...
możesz zrobićuser_save($account, $edit);
iuser_save()
zaszyfrować.Aby programowo utworzyć użytkownika z rolami i niestandardowymi wartościami pól (np. Imię i Nazwisko), możesz użyć następującego kodu:
Zobacz ten post na blogu i komentarze, aby uzyskać więcej informacji: http://codekarate.com/blog/create-user-account-drupal-7-programmatically
źródło
Aby utworzyć użytkownika programowo z adresu e-mail, spróbuj tego:
źródło
Aby utworzyć użytkownika programowo:
źródło