Задача 1: если пользователь не авторизован, на главной странице вывести поля для авторизации, если авторизован, нормальный вид главной страницы.
Проблемы, связанные с проверкой авторизован пользователь в 1-с битрикс или нет решаются следующим кодом:
1 2 3 4 5 6 7 | <? global $USER ; if ( $USER ->IsAuthorized()){ echo "Ты авторизован!" ; } else { echo "Ты не авторизован!" ; } ?> |
Функция CUser::IsAuthorized() проверяет авторизован ли посетитель сайта, если да, то возвращает true, иначе false. Может принимать аргумент — ID пользователя.
Решение задачи 1 будет следующим:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <? 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с-Битрикс.
Решение второй задачи будет следующим:
1 2 3 4 5 6 7 8 9 10 | <? 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: если пользователь не авторизован, показывать ему рекламу, если авторизован, то без рекламы.
Делаем аналогично:
1 2 3 4 5 6 7 8 9 | <? 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 авторизованного пользователя.
1 2 3 4 5 6 | <? if (!defined( "B_PROLOG_INCLUDED" ) || B_PROLOG_INCLUDED!==true) die ();?> <? global $USER ; if (( $USER ->GetID())==21) { /*специальное предложение*/ }?> |
Задача 5: показать блок пользователям группы администратор.
Очень полезная функция для разработчиков, если нужно вывести содержимое массива на рабочем сайте: CUser::IsAdmin(). Возвращает true, если вы принадлежите группе админов, иначе false.
1 2 3 4 | <? if (!defined( "B_PROLOG_INCLUDED" ) || B_PROLOG_INCLUDED!==true) die ();?> global $USER ; if ( $USER ->IsAdmin()) echo "Вы администратор!" ; ?> |
Для успешного освоения движка советую прочитать эту статью.
UPD 28.07.15:
- подправлено решение 4-ой задачи;
- добавлены функции IsAdmin() и GetID().
О! Знакомый блог! :) Работа снова началась. Это радует!
Я брал у них карты летом, все ништяк! Поработали хорошо :)
Проверка принадлежности пользователя к группе:
$GroupID=6;
$arUserGroups = $USER->GetUserGroupArray();
foreach($arUserGroups as $arUg)
{
if($arUg==$GroupID)
{
$arResult[‘isAdmin’]=true;
break;
}
}
Последний пример в статье немного бредовый: он показывает специальное предложение всем, если Вася сейчас на сайте. Но креативно :)
Форму авторизации можно вывести проще.
if(!$USER->IsAuthorized()){
$APPLICATION->AuthForm();
return;
}