2010-10-04 2 views

ответ

11

Вы можете использовать функцию user_load. См http://api.drupal.org/api/function/user_load/6

В частности, см http://api.drupal.org/api/function/user_load/6#comment-6439

Так что вы могли бы сделать что-то вроде этого:

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

Чтобы получить идентификатор пользователя, это довольно медленный способ сделать это, так как она включает в себя все модули, реализующие hook_user, создавая неизвестное количество запросов. – googletorp

+0

@googletorp: Согласитесь, это медленно. Но я думал, что это будет проще для Хамида. Практически говоря, «node_load», который по своей концепции «user_load» похож на «user_load», очень часто встречается у Drupal, если я не ошибаюсь и в большинстве случаев не отрицательно влияет на производительность. Поэтому я подумал, что было бы неплохо порекомендовать 'user_load' –

+2

Когда он сам спрашивает, должен ли он просто выполнить запрос db, я уверен, что он сможет это сделать. В конце концов, это не так сложно. – googletorp

0

Там нет готовых функций API для этого, не то, что я знаю. Но вы можете сделать свой собственный, если вам нужно несколько мест. Это должно быть довольно простым и прямым запросом для db для uid.

5

Функция загрузки пользователь очень тяжелая, будет использовать больше ресурсов и возвращать больше данных, чем требуется, вот миленькая функция для вас:

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

Примечание: Этот код переработанное и вход спасшемся , поэтому код никоим образом не опасен.

+0

Не помещайте электронную почту в stackoverflow в этом формате. Вы знаете, что вас прозвут –

+1

wow, что очень опасно, потому что он принимает входные данные из формы ... google "injection attack" – ErichBSchulz

+0

hey thanks, только что спешил, теперь обновит код –

9

Как-то я не мог сделать работу запроса, но я нашел это:

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

см: http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_load_by_name/7

+0

Ваш answeer неплох, потому что он прост и может быть применен внутри пользовательской функции проверки для входа form (где пользовательский глобальный var еще не установлен) Большое вам спасибо!+1 – Roger

2

Вы можете получить всю информацию о вошедшего пользователя с глобальной переменной $user.

Код:

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

Ваше решение является лучшим, но когда вам нужно сделать это внутри пользовательской функции проверки для формы входа, вам необходимо использовать решение Willem de Jong. +1 – Roger

Смежные вопросы