User getid


Все приведенные примеры по работе со свойствами пользователя есть в официальной документации и на форуме, в этой статье я публикую то, с чем мне пришлось столкнуться.

Получим массив групп пользователя ID=12

$arGroups = CUser::GetUserGroup(12);
echo «<pre>»; print_r($arGroups); echo «</pre>»;
Получим массив групп текущего пользователя
global $USER;
$arGroups = $USER->GetUserGroupArray();
echo «<pre>»; print_r($arGroups); echo «</pre>»;
Авторизован ли пользователь
global $USER;
if ($USER->IsAuthorized()) echo «Вы авторизованы!»;

Принудительно авторизуемся под админом:
global $USER;
$USER->Authorize(1);

Если пользователь админ

if ($USER->IsAdmin())
{
// действие
}

Принудительно разлогинемся


global $USER;
$USER->Logout();

Данные текущего пользователя

global $USER;

$USER->ChangePassword(«admin», «WRD45GT», «123456», «123456»);
логин, контрольная строка, новый пароль, подтверждение

if ($USER->IsAuthorized()) echo «Вы авторизованы!»;

$USER->GetID()
$USER->GetLogin()
$USER->GetFullName()
$USER->GetFirstName()
$USER->GetLastName()
$USER->GetEmail()
$USER->GetParam(«EMAIL»)
AUTHORIZED — если пользователь авторизован, то «Y»
USER_ID — ID пользователя
LOGIN — логин
EMAIL — E-mail
NAME — полное имя (не только имя пользователя, но и фамилию)
GROUPS — массив групп, которым принадлежит пользователь
ADMIN — true, если пользователь принадлежит группе администраторов
PASSWORD_HASH — соль и хеш пароля с солью
$salt . md5($salt . $pass)
где $salt — 8 случайных символов, которые меняются при каждой смене пароля.
FIRST_NAME — имя пользователя
LAST_NAME — фамилия пользователя
SECOND_NAME — отчество пользователя

Все дополнительные поля

К сожалению нет специального метода для получения таких полей как личная информация и рабочая информация, поэтому все через GetList:

$by = «ID»;
$order = «ASC»;
$rsUser = CUser::GetList(($by=»ID»), ($order=»desc»), array(«ID»=>$USER->GetID()),array(«SELECT»=>array(«UF_*»));
if ($arUser = $rsUser->Fetch())
{
echo «<pre>»;
print_r($arUser);
echo «</pre>»;
}


Обновление данных пользователя
<?
$user = new CUser;
$fields = Array(
«NAME» => «Сергей»,
«LAST_NAME» => «Иванов»,
«EMAIL» => «Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. «;,»> Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. «,
«LOGIN» => «ivan»,
«LID» => «ru»,
«ACTIVE» => «Y»,
«GROUP_ID» => array(1,2),
«PASSWORD» => «123456»,
«CONFIRM_PASSWORD» => «123456»,
«UF_SHOP» => array(11,12,13),
);
$user->Update($ID, $fields);
$strError .= $user->LAST_ERROR;
?>

Фото пользователя
CFile::GetPath($arUser[‘PERSONAL_PHOTO’])

Восстановление пароля
<?$APPLICATION->IncludeComponent( «bitrix:system.auth.forgotpasswd»,
«.default»,
Array()
);?>


www.khtulhu.org.ua

 /**   *   * @param UserModelUser $item   * @param unknown $options   */   public function search($item, $options)   {   $select = $this->getDbSql()->select(array('u' => self::TABLE_NAME));   if ($item->getId()) {   $select->where(['u.id' => $item->getId()]);   }   if ($item->getUsername()) {   $select->where(['(u.username LIKE ? OR u.fullName LIKE ?)' => ['%' . $item->getUsername() . '%', '%' . $item->getUsername() . '%']]);   }   if ($item->getEmail()) {   $select->where(['(u.email LIKE ?)' => '%' . $item->getEmail() . '%']);   }   if ($item->getActive()) {   if ($item->getActive() > 0) {   $select->where(['u.active' => 1]);   } else {   $select->where(['(u.active IS NULL OR u.active != ?)' => 1]);   }   }   if ($item->getRole()) {   $select->where(['u.role' => $item->getRole()]);   }   $select->order(['u.id' => 'DESC']);   $paginator = $this->preparePaginator($select, $options, new User());   $userIds = [];   $districIds = [];   $cityIds = [];   $ids = [];   foreach ($paginator as $user) {   /*@var $user UserModelUser */   if ($user->getCreatedById()) {   $userIds[$user->getCr.  

= $this->getDbSql()->buildSqlString($select); $rows = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); if ($rows->count()) { foreach ($rows as $row) { $createdBy = new User(); $createdBy->exchangeArray((array) $row); $users[$createdBy->getId()] = $createdBy; } } } $cities = []; if (count($cityIds)) { $select = $this->getDbSql()->select(array('c' => AddressModelCityMapper::TABLE_NAME)); $select->where(['id' => $cityIds]); $query = $this->getDbSql()->buildSqlString($select); $rows = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE); if ($rows->count()) { foreach ($rows as $row) { $city = new AddressModelCity(); $city->exchangeArray((array) $row); $cities[$city->getId()] = $city; } } } $districs = []; if (count($districIds)) { $select = $this->getDbSql()->select(array('c' => AddressModelDistrictMapper::TABLE_NAME)); $select->where(['id' => $districIds]).

er->getCreatedById()])) { $user->addOption('createdBy', $users[$user->getCreatedById()]); } if ($user->getCityId() && isset($cities[$user->getCityId()])) { $user->setCity($cities[$user->getCityId()]); } if ($user->getDistrictId() && isset($districs[$user->getDistrictId()])) { $user->setDistrict($districs[$user->getDistrictId()]); } } } return $paginator; }

hotexamples.com

Задача 1: если пользователь не авторизован, на главной странице вывести поля для авторизации, если авторизован, нормальный вид главной страницы.

Проблемы, связанные с проверкой авторизован пользователь в 1-с битрикс  или нет решаются следующим кодом:

 <? global $USER; if ($USER->IsAuthorized()){ echo "Ты авторизован!"; }else{ echo "Ты не авторизован!"; } ?> 

Функция CUser::IsAuthorized() проверяет авторизован ли посетитель сайта, если да, то возвращает true, иначе false. Может принимать аргумент — ID пользователя.


Решение задачи 1 будет следующим:

 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? global $USER; if ($USER->IsAuthorized()){ print_r("Добро пожаловать на наш сайт!<br>"); print_r("ID пользователя: ".$USER->GetID()."<br>"); print_r("Логин пользователя: ".$USER->GetLogin()."<br>"); print_r("Имя и фамилия пользователя: ".$USER->GetFullName()."<br>"); }else{?> <?$APPLICATION->IncludeComponent( "bitrix:system.auth.form", ".default", Array( "REGISTER_URL" => "/personal/register.php", "FORGOT_PASSWORD_URL" => "/personal/profile/?forgot_password=yes", "PROFILE_URL" => "/personal/profile/", "SHOW_ERRORS" => "Y" ) ); }?>  
Задача 2: показать текст только для авторизованных пользователей на сайте в CMS 1с-Битрикс.

Решение второй задачи будет следующим:

 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? global $USER; if ($USER->IsAuthorized()) { print_r("Добро пожаловать на наш сайт!<br>"); print_r("Сегодня, вы, авторизованный пользователь, получите огромные скидки!"); }else{ print_r("Добро пожаловать на наш сайт!<br>"); print_r("Сегодня скидок нет."); }?>  
Задача 3: если пользователь не авторизован, показывать ему рекламу, если авторизован, то без рекламы.

Делаем аналогично:


 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? global $USER; if ($USER->IsAuthorized()) { print_r("Добро пожаловать на наш сайт!"); }else{ print_r("Добро пожаловать на наш сайт!<br>"); /*устанавливаем баннеры, либо другие виды рекламы вместо этого комментария */ }?>  
Задача 4:  показать блок конкретному пользователю.

Показываем для Васи(Его ID — 21), специальное предложение. Будем использовать функцию CUser::GetID(), которая возвращает ID авторизованного пользователя.

 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? global $USER; if(($USER->GetID())==21) { /*специальное предложение*/ }?> 
Задача 5:  показать блок пользователям группы администратор.

Очень полезная функция для разработчиков, если нужно вывести содержимое массива на рабочем сайте: CUser::IsAdmin(). Возвращает true, если вы принадлежите группе админов, иначе false.

 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> global $USER; if ($USER->IsAdmin()) echo "Вы администратор!"; ?> 

Для успешного освоения движка советую прочитать эту статью.

UPD 28.07.15:


  • подправлено решение 4-ой задачи;
  • добавлены функции IsAdmin() и GetID().

thisis-blog.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.