Как проверить, авторизован ли пользователь на сайте в CMS 1с-Битрикс?

Задача 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().
ПоделитьсяShare on Facebook0Share on VKShare on Google+0Tweet about this on TwitterShare on LinkedIn0Pin on Pinterest0

4 комментария

  • Batskmandj:

    О! Знакомый блог! :) Работа снова началась. Это радует!
    Я брал у них карты летом, все ништяк! Поработали хорошо :)

  • Аноним:

    Проверка принадлежности пользователя к группе:

    $GroupID=6;
    $arUserGroups = $USER->GetUserGroupArray();
    foreach($arUserGroups as $arUg)
    {
    if($arUg==$GroupID)
    {
    $arResult[‘isAdmin’]=true;
    break;
    }
    }

  • Серёга:

    Последний пример в статье немного бредовый: он показывает специальное предложение всем, если Вася сейчас на сайте. Но креативно :)

  • Форму авторизации можно вывести проще.

    if(!$USER->IsAuthorized()){
    $APPLICATION->AuthForm();
    return;

    }

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