2010-10-04 3 views

Antwort

11

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 
+2

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

+0

@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. –

+2

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

0

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.

5

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.

+0

keine E-Mail auf Stackoverflow in diesem Format. Sie wissen, dass Sie spaced werden –

+1

Wow, das ist sehr gefährliche Abfrage gegeben seine Eingabe von einem Formular ... google "Injektion Angriff" – ErichBSchulz

+0

hey danke, war nur in Eile, werde den Code jetzt aktualisieren –

9

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

+0

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

2

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; 
?> 
+0

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