Дебаг 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-файла, до которой добрался пользователь.

Блог

Как расставить запятые между тегами на CSS?

Иногда проще что-то сделать на чистом CSS, чем на серверной стороне. Например, расставить запятые между тегами. Попробуем разделить подчеркнутые теги-ссылки на чистом CSS.

далее

Как отресайзить картинки батчем?

Все фотографии, которые вы собираетесь отресайзить, должны быть в одной директории, скажем «uploads». Внутри нее можно сохранить любую структуру директорий. Мы научимся создавать копию этой директории, внутри которой все картинки будут отресайзены, причем только в сторону уменьшения разрешения.

далее

Tilda Module: интеграция NetCat с Tilda.cc

Представляем нашу новую разработку, модуль интеграции CMS NetCat с платформой Tilda.cc. Модуль дает возможностью полуавтоматически размещать классные лендинги прямо в структуре вашего сайта!

далее

Как оптимально заархивировать файлы, чтобы распаковать их средствами ISPmanager?

В определенных случаях файлы выгоднее заливать на веб-сервер в виде архива. Во-первых, если данные хорошо сжимаются, или же просто файлов очень много, это сократит время заливки. Во-вторых, в любом случае это обезопасит данные от случайного повреждения, так как при распаковке архива происходит проверка его целостности с помощью контрольной суммы (CRC). Однако, не вполне понятно, какой формат архива и тип сжатия выбирать? Мы провели небольшое экспериментальное исследование на эту тему.

далее

Весь блог тут