Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как узнать ID пользователя по e-mail?

00 голосов
6
Добрый день!
Подскажите, пожалуйста, как узнать ID пользователя по e-mail? CSubscription::GetByEmail - не подходит, так как не все пользователи включены в рассылки.
--
Есть ещё вариант - CUser::GetList (и в фильтре указать email) - но если юзеров много - не будет ли медленно работать функция?
спросил 08 Май, 13 от Yago (360 баллов)

6 Ответы

00 голосов
Цитата
CDBResult CUser::GetList(
string &by = "timestamp_x", string &order = "desc", array filter = array(), array arParams=array()
)

filter Массив для фильтрации пользователей. В массиве допустимы следующие индексы:
1ID - по ID пользователя
TIMESTAMP_1 - дата изменения профайла пользователя "с"
TIMESTAMP_2 - дата изменения профайла пользователя "по"
LAST_LOGIN_1 - дата последнего логина пользователя "с"
LAST_LOGIN_2 - дата последнего логина пользователя "по"
LAST_ACTIVITY - интервал в секундах
ACTIVE - фильтр по активности (Y|N)
1LOGIN_EQUAL - по имени входа (ищет прямое совпадение с логином)
1LOGIN - по имени входа (ищет подстроку в логине)
1NAME - по имени и фамилии
1EMAIL - по E-Mail адресу
1COUNTRY_ID - по коду страны
GROUPS_ID - по группам (массив с кодами групп пользователей)
PERSONAL_BIRTHDAY_1 - день рождения "с"
PERSONAL_BIRTHDAY_2 - день рождения "по"
1KEYWORDS - по нижеследующим полям профайла помеченных символом - *
1* PERSONAL_PROFESSION - профессия
1* PERSONAL_WWW - WWW-страница
1* PERSONAL_ICQ - номер ICQ
1* PERSONAL_GENDER - пол ("M" - мужской; "F" - женский)
1* PERSONAL_PHOTO - ID файла - фотографии (таблица b_file)
1* PERSONAL_PHONE - номер телефона
1* PERSONAL_FAX - номер факса
1* PERSONAL_MOBILE - номер мобильного
1* PERSONAL_PAGER - номер пейджера
1* PERSONAL_STREET - улица
1* PERSONAL_MAILBOX - почтовый ящик
1* PERSONAL_CITY - город
1* PERSONAL_STATE - область / край
1* PERSONAL_ZIP - почтовый индекс
1* PERSONAL_COUNTRY - код страны (хранится в файлах \bitrix\modules\main\lang\ru\tools.php, \bitrix\modules\main\lang\en\tools.php)
1* PERSONAL_NOTES - дополнительные заметки
1* WORK_COMPANY - наименования компании
1* WORK_DEPARTMENT - отдел
1* WORK_POSITION - должность
1* WORK_WWW - WWW-страница компании
1* WORK_PHONE - рабочий телефон
1* WORK_FAX - рабочий факс
1* WORK_PAGER - рабочий пейджер
1* WORK_STREET - улица компании
1* WORK_MAILBOX - почтовый ящик компании
1* WORK_CITY - город компании
1* WORK_STATE - область / край компании
1* WORK_ZIP - почтовый индекс компании
1* WORK_COUNTRY - код страны компании (хранится в файлах \bitrix\modules\main\lang\ru\tools.php, \bitrix\modules\main\lang\en\tools.php)
1* WORK_PROFILE - направление деятельности компании
1* WORK_NOTES - дополнительные заметки касаемо места работы
1* ADMIN_NOTES - комментарий администратора (доступен для просмотра и редактирования только администратору сайта)
1 - в данных полях допускается сложная логика
* - поиск по "KEYWORDS" по сути является поиском по полям отмеченных символом "*"
ответил 08 Май, 13 от ashkmn (700 баллов)
00 голосов
поправили)

когда данных много, это всегда тяжело) но думаю это единственный грамотный метод
ответил 09 Май, 13 от ashkmn (700 баллов)
00 голосов
Цитата
Василий Дорожкин пишет:
Подскажите, пожалуйста, как узнать ID пользователя по e-mail?

Код
$filter = Array("EMAIL" => $email);
$sql = CUser::GetList(($by="id"), ($order="desc"), $filter);
if($sql->NavNext(true, "f_"))
{
   $id_user = $f_ID;
   echo $id_user;
}

В $id_user будет содержаться ID пользователя.
ответил 12 Июль, 13 от Runnar (1,000 баллов)
00 голосов
Воспользовался CUser::GetList - в принципе, работает достаточно быстро (в базе ~40.000 Пользователей). Спасибо!!!
ответил 16 Окт, 13 от Yago (360 баллов)
00 голосов
Если нужно по точному совпадению, то лучше фильтр "=EMAIL".
ответил 18 Янв, 14 от Ixie (540 баллов)
00 голосов
Цитата
Vadim Dumbravanu пишет:
Если нужно по точному совпадению, то лучше фильтр "=EMAIL".
а как код выглядеть будет в этом случае?
ответил 06 Май, 14 от nina (180 баллов)

Похожие вопросы

0 голосов
2 ответов
0 голосов
7 ответов
спросил 30 Май, 13 от Bambocho (300 баллов)
0 голосов
3 ответов
0 голосов
6 ответов
спросил 24 Июль, 13 от Snezhka (2,240 баллов)
0 голосов
6 ответов
спросил 02 Июнь, 13 от LeonKing (140 баллов)