Дебаг php-кода на примере диагностики системы авторизации NetCat

Поступила задача: понять, почему CMS NetCat иногда выбрасывает некоторых пользователей интранет-портала. Чтобы выяснить причину (а причина, забегая вперед, оказалась в том, что во внутренней сети у пользователей существует свой собственный DNS-сервер, или, может маршрутизатор, который по-разному прокладывает пути до сервера), нам пришлось научиться мониторить систему авторизации и "следить" за действиями пользователя.

Для этого мы внедрились в файл \netcat\system\essences\nc_user.class.php.

Инициализация дебага собирает базовую информацию о пользователе:

  1. /* МЕГАДЕБАГ: детектим строчку, на которой выкидывает юзеров */
  2. global $DOCUMENT_ROOT;
  3. $phdebug_time = date("Y-m-d H:i:s");
  4. $phdebug_ip = $_SERVER['REMOTE_ADDR'];
  5. $phdebug_req = $_SERVER['REQUEST_URI'];
  6. $phdebug_agent = $_SERVER['HTTP_USER_AGENT'];
  7. $doDebug = false;
  8. if ($phdebug_ip == '192.168.5.42') $doDebug = true; // вписать сюда IP-адрес тестируемого компа
  9. $log_file = $DOCUMENT_ROOT."/_DEBUG_by_Finar/user_logoff_logs.txt";
  10.  
  11. if ($doDebug) {
  12.   file_put_contents($log_file, "$phdebug_time | $phdebug_ip | $phdebug_agent | $phdebug_req | \n", FILE_APPEND | LOCK_EX);
  13.   }
  14. /* // МЕГАДЕБАГ. Далее до конца функции вызываются через строчки с if ($doDebug) */

Далее на каждой значимой сточке ставим ловушки:
if ($doDebug) file_put_contents($log_file, " was on line ". __LINE__ ." \n", FILE_APPEND | LOCK_EX);

Итог: в лог попадают данные о пользователе с заранее известном IP-адресе, а также процесс его "путешествия" по системе авторизации. Успешная авторизация при этом в логах выглядит вот так:

2015-07-21 12:39:13 | 192.168.5.42 | Mozilla/5.0 (Windows NT 6.2; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0 | /news/load/ | 
  was on line 268 
  was on line 309 
  was on line 322 
  was on line 350 
  was on line 352 
  GOT AUTH_USER_ID on line 354 

Не успешная - сообщит от номере сроки php-файла, до которой добрался пользователь.

Блог

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

Поломка админки NetCat 4.7 в Google Chrome и Opera

В современных версиях Google Chrome и Opera, вышедших в прошлом месяце, админка CMS NetCat 4.7 и младше вдруг сломалась. Поломка проявляется в том, что в правой части админки перестала показываться нижняя панель редактирования (там, где кнопки Добавить и прочие), а скролл-прокрутка не осуществляется до конца. Работать с сайтом и добавлять новые материалы не представляется возможным.

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Права Доступа в Компонентах: работают не так, как ожидается; но можно накостылить патч

Если в настройках Раздела или Инфоблока NetCat попробовать дать доступ на изменение объекта ВСЕМ, ничего не получится. Просмотр и Добавление работают одним образом, а Изменение, Включение и Удаление -- другим.

далее

Весь блог тут