phpjs
статьи о программировании
Bitrix создание модуля
В официальной док-ии есть подробное описание. Наверно в этом его и недостаток, что оно какое то слишком подробное. Сам я учился создавать модуль на примере других модулей, но натыкался на подводные камни, присущие именно bx.
Подводные камни создания модуля:
В самом корне модуля — include.php Это как раз entry point модуля. Когда вы вызываете
автоматом тянется этот файл. Чаще всего вся логика в нем и сосредоточена, но бывает что он выполняет лишь роль autoloader. Это уже как вы сами решите. Можно даже оставить пустым.
Далее по порядку, сверху вниз. Папка admin. В ней создаем пхп-файл с любым названием, но лучше пусть будет как название модуля — excel.php
Как видите скрипт ничего особенного не делает как просто подключает класс модуля. Тем не мении лоигка может быть сосредоточена тут.
Файл меню для модуля.
Здесь задается ссылка в сайдбаре админки битрикса. В каком именно пункте — Сервисах или проч. — выбираем сами. Все подробно описано в док-ии битрикса.
Наконец папка Install. Многие файлы отсюда копируются в директории admin, js, tools, images.
Это главный установочный файл модуля. Он отвечает за перемещение файлов в админ дир-ю, создание таблиц, подключение событий. Класс установщика обязательно именуется по id модуля.
Шаг 1 это форма где заполняем свои данные подключения к БД и проч. Необязателен.
Шаг 2 — просто сообщение об успешной или не очень установке)
Сообщение о результате деинсталляции.
Ошибки при переходе на PHP7
Стала выдаваться ошибка:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/h910235323/tgliamz.ru/docs/bitrix/modules/main/classes/mysql/database.php:83 Stack trace: #0 /home/h910235323/tgliamz.ru/docs/bitrix/modules/main/classes/mysql/database.php(120): CDatabase->DoConnect() #1 /home/h910235323/tgliamz.ru/docs/bitrix/modules/main/classes/mysql/main.php(99): CDatabase->Query(‘SELECT L.*, L.L. ‘, false, ‘FILE: /home/h91. ‘) #2 /home/h910235323/tgliamz.ru/docs/bitrix/modules/main/include.php(1): CMain->GetLang() #3 /home/h910235323/tgliamz.ru/docs/bitrix/modules/main/include/prolog_before.php(14): require_once(‘/home/h91023532. ‘) #4 /home/h910235323/tgliamz.ru/docs/bitrix/modules/main/include/prolog.php(11): require_once(‘/home/h91023532. ‘) #5 /home/h910235323/tgliamz.ru/docs/bitrix/header.php(1): require_once(‘/home/h91023532. ‘) #6 /home/h910235323/tgliamz.ru/docs/index.php(1): require(‘/home/h91023532. ‘) #7
При переходе на PHP7.1
ошибка
[ErrorException] E_DEPRECATEDNon-static method CSiteCorporate::ShowPanel() should not be called statically (0)
/home/h910235323/meranorm.ru/docs/bitrix/modules/main/classes/general/module.php:490
#0: ExecuteModuleEventEx(array)
/home/h910235323/meranorm.ru/docs/bitrix/modules/main/include.php:568
#1: require_once(string)
/home/h910235323/meranorm.ru/docs/bitrix/modules/main/include/prolog_admin_before.php:18
#2: require_once(string)
/home/h910235323/meranorm.ru/docs/bitrix/modules/main/interface/desktop.php:2
#3: require(string)
/home/h910235323/meranorm.ru/docs/bitrix/admin/index.php:2
[ParseError] syntax error, unexpected ‘[‘, expecting ‘,’ or ‘;’ (0)
/home/a/apikcru/public_html/bitrix/components/alexkova.corporate/block.list/templates/.default/bitrix/news.list/.default/template.php:5
#0: CBitrixComponentTemplate->__IncludePHPTemplate(array, array, string)
/home/a/apikcru/public_html/bitrix/modules/main/classes/gene ral/component_template.php:820
#1: CBitrixComponentTemplate->IncludeTemplate(array)
/home/a/apikcru/public_html/bitrix/modules/main/classes/gene ral/component.php:745
#2: CBitrixComponent->showComponentTemplate()
/home/a/apikcru/public_html/bitrix/modules/main/classes/gene ral/component.php:693
#3: CBitrixComponent->includeComponentTemplate()
/home/a/apikcru/public_html/bitrix/components/bitrix/news.list/component.php:426
#4: include(string)
/home/a/apikcru/public_html/bitrix/modules/main/classes/gene ral/component.php:604
#5: CBitrixComponent->__includeComponent()
/home/a/apikcru/public_html/bitrix/modules/main/classes/gene ral/component.php:663
#6: CBitrixComponent->includeComponent(string, array, object)
/home/a/apikcru/public_html/bitrix/modules/main/classes/gene ral/main.php:1039
#7: CAllMain->IncludeComponent(string, string, array, object)
/home/a/apikcru/public_html/bitrix/components/alexkova.corporate/block.list/templates/.default/template.php:25
#8: include(string)
Бэкдор во взломанном 1С-Битрикс: под угрозой сотни сайтов
Вообще, взлом CMS это не такая редкая штука. Постоянно то и дело появляются разные нескучные уязвимости которые эксплуатируют все, кому не лень. Сложнее всего тогда, когда компоненты сайта, которые построены на каких-либо массовых платформах не обновляются, их взламывают, и хуже, когда это происходит массово. Но по специфике работы не привыкать к анализу таких проблем, выяснением «кто виноват» и самое важное тут убедиться в том, что дело именно в сайте.
Анализируя содержимое сайта, что первое бросается в глаза, так это наличие нехарактерного мусора:
Таких файлов, как правило, быть вообще не должно. Хорошо, смотрим на дату создания таких файлов и лезем в логи для анализа что происходило на сайте в какой-то промежуток времени. Тут всё оказалось проще, чем хотелось бы:
Видно простой перебор файлов по словарю. Все запросы летят с одного IP, а главное, видно файл new.php, который вместо 404 вернул редирект 302, и сразу после этого видим POST на /bitrix/admin. Вау! Что же это такое?
Те, кто хоть раз в жизни писал код для битрикса, сразу же поймет что этот код делает. А кто не писал, то всё просто: делает авторизацию под пользователем с который как правило является админом сайта.
Пробегаемся поиском по паттерну и находим сразу три таких файла с одинаковым содержимым:
bitrix/admin/mobile/new.php
bitrix/tools/new.php
bitrix/new.php
Почему не только лишь все?
Держите свои сайты в безопасности и не позволяйте случаться таким неприятным ситуациям.
нужна помощь по сессиям.
тобиш в главном каталоге, файл htaccess.php
строчки session.save_path у меня вообще нет) все что есть из сессий, это php_flag session.use_trans_sid off, и она закомментированна.
P.S. если бы не правильно был прописан путь, мне бы написали подругому, у меня другая проблема, закрыт доступ к записи в каталог параметров сессий, мне надо его найти.
Если не можете сами, то попросите техподдержку хостинга.
Создайте, например, в папке htdocs папку session, и попросите техподдержку хостинга поменять путь в php.ini на session.save_path = /storage/home/srv14976/htdocs/session/
Да, не забудьте права на запись в папку session установить.
З.Ы. возможно bitrix просит открыть доступ к каталогу не общему, а внутреннему, так что вопрос думаю к администраторам мой..
строка 279 удалить
if (!BXInstallServices::CheckSession())
<
$this->SetError(InstallGetMessage(«INST_SESSION_NOT_SUPPORT»));
return false;
>
| Цитата |
|---|
| Василий Лучинкин пишет: \bitrix\modules\main\install\wizard\wizard.php |
строка 279 удалить
if (!BXInstallServices::CheckSession())
<
$this->SetError(InstallGetMessage(«INST_SESSION_NOT_SUPPORT»));
return false;
>
У меня тоже имеет место эта проблема.
| Цитата |
|---|
| Илья Душин пишет: В php.ini параметр session.save_path = «/tmp» У папки tmp права стоят 777. Бред. |
через restore сайт восстановился с н-ного раза но вылетал из админки.
Сейчас пробую поставить заново. Выдает что недоступен каталог под сессии.
Хостеры пинают что у них все хорошо, на другом хостинге все поднял без проблем.
Доступа к php.ini нету.
Поделюсь интересной ситуацией. Я также напоролся на ошибку «Нет. Вероятно, каталог, используемый для сохранения параметров сессии, не доступен для записи». В php.ini прописал session.save_path = «C:\tmp»(ставил в локале), жмакаю F5(ни один раз), проблема не решается. Захожу в папку tmp сессия создана, но весит 0 байт, а потом чисто случайно нажал «Назад» на предущий шаг и снова вперёд и.. даже с бубном прыгать не надо)) все работает)
Всем удачи, может кому-то моё сообщение поможет
Для разработчиков
Описание
Раздел предназначен для технических специалистов со знанием PHP и HTML. Раздел содержит сведения о технологиях и основных принципах, заложенных в систему Bitrix Framework, описание классов и функций модуля Главный модуль.
Документация носит справочный характер. Для дополнительного изучения рекомендуются учебные курсы Администратор. Базовый и Разработчик Bitrix Framework.
Компоненты
Модуль включает в себя следующие Компоненты 2.0:
| Компоненты модуля | ||
|---|---|---|
| Название | Имя в пространстве имен bitrix | Описание |
| Рабочий стол | desktop | Позволяет создать настраиваемый рабочий стол с использованием разнофункциональных гаджетов. |
| Упрощенный HTML-редактор | fileman.light_editor | Выводит упрощенный визуальный HTML-редактор. |
| Элемент управления «Календарь» | main.calendar | Используется для ввода даты/времени. |
| Элемент управления «Часы» | main.clock | Служит для удобного ввода времени с использованием часов. |
| Элемент управления «Палитра» | main.colorpicker | Служит для удобного ввода таблицы выбора цвета. |
| Журнал изменений | event_list | Позволяет вывести историю изменений, произошедших на проекте. |
| Форма обратной связи | main.feedback | Выводит форму для отправки сообщения с сайта на E-mail. |
| Включаемые области | ||
| Вставка включаемой области | main.include | Располагается в шаблоне дизайна сайта и определяет место расположения включаемых областей страниц и разделов. |
| Навигация | ||
| Выбор сайта | main.site.selector | Включен в шаблон дизайна сайта и служит для переключения между сайтами, созданными на базе данной копии продукта. |
| Меню | menu | Выводит меню указанного типа. |
| Навигационная цепочка | breadcrumb | Выводит навигационную цепочку в шаблоне. |
| Пункты меню | menu.sections | Осуществляет дополнение созданного меню названиями разделов инфоблоков. |
| Карта сайта | ||
| Карта сайта | main.map | Осуществляет отображение карты сайта. |
| Пользователи | ||
| Имя пользователя с тултипом | main.user.link | Выводит имя пользователя с всплывающей подсказкой (тултипом), который содержит информацию о пользователе социальной сети.. |
| Настраиваемая регистрация | main.register | Позволяет настроить форму регистрации на сайте. |
| Параметры пользователя | main.profile | Выводит в публичную часть сайта информацию о пользователе. |
| Форма авторизации | system.auth.form | Выводит форму авторизации. |
| Форма подтверждения регистрации | system.auth.confirmation | Выводит форму подтверждения регистрации. |
| Системные компоненты (не описываются) | ||
| Форма авторизации | system.auth.authorize | Осуществляет вывод формы авторизации. |
| Форма смены пароля | system.auth.changepasswd | Осуществляет вывод форма смены пароля. |
| Форма отправки контрольного слова для смены пароля | system.auth.forgotpasswd | Осуществляет вывод форма отправки контрольного слова для смены пароля. |
| Форма регистрации | system.auth.registration | Осуществляет отображение формы регистрации. |
| Форма ввода настраиваемого пользовательского свойстства | system.field.edit | Осуществляет ввод настраиваемого пользовательского свойства. |
| Форма вывода настраиваемого пользовательского свойстсва | system.field.view | Осуществляет вывод настраиваемого пользовательского свойства. Чтобы не использовать API классов пользовательских полей для получения значений, можно использовать этот компонент: |
| Шаблон постраничной навигации | system.pagenavigation | шаблон постраничной навигации. |
| Форма вывода сообщения об ошибке | system.show_message | Осуществляет вывод сообщения об ошибке. |
| Компонент вывода формы | main.interface.form | Осуществляет вывод форм в рамках универсальных списков. |
| Компонент вывода таблицы | main.interface.grid | Осуществляет вывод таблиц в рамках универсальных списков. |
| Компонент вывода панели инструментов | main.interface.toolbar | Осуществляет вывод панели инструментов в рамках универсальных списков. |
| Компонент вывода кнопок меню | main.interface.buttons | Осуществляет вывод своего меню на странице. |
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

