Ich erstelle einen Benutzer programmgesteuert wie folgt:
$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);
Ich habe eine Rolle mit einer Rollen-ID von fünf. Wenn ich den Benutzer erstelle, gibt es in der Tabelle "users_roles" nur eine Zeile mit dem Wert 0 für die Rollen-ID, aber wenn ich das Benutzerobjekt mit drucke var_dump()
, sieht es so aus, als würden die Rollen erstellt.
Was mache ich falsch?
array($role_id => 'anything')
Antworten:
Dieser Code hat bei mir funktioniert:
quelle
user_save
kümmert sich darumuser_save()
zweiten Argument steht, wird es gehasht. Wenn Sieuser_save($account)
ohne das$edit
Argument auskommen, findet keine MD5-Konvertierung statt. Die Antwort von @SMTF unten zeigt dies.Dies ist ein Beispiel, das ich auf einer Website gefunden habe.
quelle
user_hash_password('bar');
ist falschuser_save()
Hashing von Passwörtern vor dem Speichern fehlschlägt (nach meiner eigenen Erfahrung und wenn ich andere im Internet sehe, tritt dies gelegentlich auch auf). Ich weiß nicht warum (aber ich würde gerne!). In diesen Fällen erscheint ein Anrufuser_hash_password()
notwendig.user_hash_password()
manuell aufgerufen werden. Dies liegt daran, dass es nicht$edit
an dieuser_save()
. Wenn der Code enthält$edit = array('pass' => 'bar');
(was diese Antwort nicht tut)$account->pass = user_hash...
, könnenuser_save($account, $edit);
unduser_save()
werden Sie stattdessen das Hashing für Sie durchführen.Um einen Benutzer mit Rollen und benutzerdefinierten Feldwerten (wie z. B. Vorname und Nachname) programmgesteuert zu erstellen, können Sie den folgenden Code verwenden:
Weitere Informationen finden Sie in diesem Blogeintrag und in den Kommentaren: http://codekarate.com/blog/create-user-account-drupal-7-programmatically
quelle
Gehen Sie folgendermaßen vor, um einen Benutzer programmgesteuert von einer E-Mail-Adresse aus zu erstellen:
quelle
So erstellen Sie einen Benutzer programmgesteuert:
quelle