Gibt es eine Kernfunktion, um den Benutzernamen in Drupal zu verwenden? Oder sollte ich eine DB-Abfrage durchführen? mein Feld ist ein Textfeld mit '#autocomplete_path' gleich 'user/autocomplete'Gibt es eine Möglichkeit, UID von Benutzername in Drupal zu erhalten?
Antwort
Sie können die user_load
Funktion verwenden. Siehe http://api.drupal.org/api/function/user_load/6
Insbesondere http://api.drupal.org/api/function/user_load/6#comment-6439 sehen
So würden Sie so etwas tun:
// $name is the user name
$account = user_load(array('name' => check_plain($name)));
// uid is now available as $account->uid
Es gibt keine fertige API-Funktion dafür, nicht dass ich wüsste. Aber Sie können Ihre eigenen machen, wenn Sie mehrere Orte benötigen. Es sollte ziemlich einfach und unkompliziert sein, die db für die UID abzufragen.
Die Benutzer Ladefunktion sehr schwer ist, würde mehr Ressourcen verbrauchen und mehr Daten zurück, als erforderlich ist, ist hier eine nette kleine Funktion für Sie:
function get_uid($username)
{
// Function that returns the uid based on the username given
$user = db_fetch_object(db_query("SELECT uid FROM users WHERE name=':username'", array(":username" => $username)));
return $user->uid;
}
Hinweis: Dieser Code überarbeitet und eingegeben entkam wird , also ist der Code in keiner Weise gefährlich.
keine E-Mail auf Stackoverflow in diesem Format. Sie wissen, dass Sie spaced werden –
Wow, das ist sehr gefährliche Abfrage gegeben seine Eingabe von einem Formular ... google "Injektion Angriff" – ErichBSchulz
hey danke, war nur in Eile, werde den Code jetzt aktualisieren –
Irgendwie konnte ich die Abfrage nicht funktioniert, aber ich fand dies:
$user = user_load_by_name($username);
$user_id = $user->uid;
siehe: http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_load_by_name/7
Ihre Antwort ist ziemlich gut, weil sie einfach ist und innerhalb einer benutzerdefinierten Validierungsfunktion für die Anmeldung angewendet werden kann form (wo Benutzer global var ist noch nicht festgelegt) Vielen Dank!+1 – Roger
Sie können über angemeldeten Benutzer mit globalen $user
Variable alle Informationen zu bekommen.
Der Code ist:
<?php
global $user;
$uid = $user->uid;
echo $uid;
?>
Ihre Lösung ist die beste, aber wenn Sie dies innerhalb einer benutzerdefinierten Validierungsfunktion für Login-Formular tun müssen, müssen Sie Willem de Jong Lösung verwenden. +1 – Roger
die uid zu bekommen, das ist ein ziemlich langsam Weg, es zu tun, da es alle Module beinhaltet, die hook_user Erstellung eine unbekannte Menge von Abfragen implementieren. – googletorp
@googletorp: stimme zu, das ist langsam. Aber ich dachte, es wäre für Hamid einfacher. Praktisch gesprochen passiert 'node_load', das im Konzept ähnlich zu 'user_load' ist, sehr häufig in Drupal, wenn ich nicht falsch liege und die Leistung in den meisten Fällen nicht beeinträchtigt. Also dachte ich, es wäre eine gute Idee, 'user_load' zu empfehlen. –
Wenn er selbst fragt, ob er nur eine db-Abfrage machen soll, bin ich mir sicher, dass er es schaffen wird. Es ist nicht so kompliziert. – googletorp