2010-10-04 29 views

Respuesta

11

Puede usar la función user_load. Ver http://api.drupal.org/api/function/user_load/6

En particular ver http://api.drupal.org/api/function/user_load/6#comment-6439

por lo que sería hacer algo como esto:

// $name is the user name 
$account = user_load(array('name' => check_plain($name))); 
// uid is now available as $account->uid 
+2

Para obtener el UID, esta es una manera bastante lenta para hacerlo, ya que involucra a todos los módulos que implementan hook_user creación de una cantidad desconocida de consultas. – googletorp

+0

@googletorp: acepte que esto es lento. Pero pensé que sería más simple para Hamid de esta manera. En términos prácticos, 'node_load', que es similar en concepto a' user_load', pasa mucho en Drupal, si no me equivoco, y no afecta negativamente el rendimiento en la mayoría de los casos. Así que pensé que sería una buena idea recomendar 'user_load' –

+2

Cuando él mismo pregunta si debería hacer una consulta de db, estoy seguro de que podrá hacerlo. No es tan complicado después de todo. – googletorp

0

no hay una función API hecho listo para esto, no que yo sepa. Pero puedes hacer tu propio si necesitas varios lugares. Debería ser bastante simple y directo consultar el db para el uid.

5

La función de carga de usuarios es muy pesado, utilizaría más recursos y volver más datos de los necesarios, he aquí una pequeña función agradable para usted:

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; 
} 

Nota: Este código es revisado y de entrada se escapó , entonces el código no es peligroso de ninguna manera.

+0

no coloque el correo electrónico en stackoverflow en este formato. Sabes que serás interceptado –

+1

wow, que es una consulta muy peligrosa dado que está recibiendo información de un formulario ... google "ataque de inyección" – ErichBSchulz

+0

hola gracias, tenía prisa, iba a actualizar el código ahora –

9

alguna razón no pude hacer el trabajo de consulta, pero me encontré con esto:

$user = user_load_by_name($username); 
$user_id = $user->uid; 

véase: http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_load_by_name/7

+0

Su respuesta es bastante buena porque es simple y puede aplicarse dentro de una función de validación personalizada para iniciar sesión form (donde el usuario global var aún no está configurado) ¡Muchas gracias!+1 – Roger

2

Usted puede obtener toda la información sobre el usuario conectado con $user variable global.

El código es:

<?php 
global $user; 
$uid = $user->uid; 
echo $uid; 
?> 
+0

Su solución es la mejor, pero cuando necesite hacer esto dentro de una función de validación personalizada para el formulario de inicio de sesión, debe usar la solución de Willem de Jong. +1 – Roger

Cuestiones relacionadas