Joomla: отправка E-Mail администратору, если произошел заход на несуществующую страницу (16.03.2013). Печать
2013 - Март
16.03.2013 15:15
Save & Share

Данное решение сейчас в процессе тестирования. Все возможные рекурсии были исключены, но все-таки 1 раз почему-то сервер свалился с ошибкой 503 от перегрузки. Работает на Joomla 1.5.5.

Формулировка задачи: при попадании пользователя на несуществующую страницу послать E-Mail администратору с существующей страницей, откуда пользователь попал на несуществующую. При этом у пользователя адресная строка не должна меняться, чтобы он сам видел, на какую несуществующую страницу занесло его величество.

Оптимизация алгоритма привела к тому, что все изменения вносятся в один файл: "/templates/system/error.php", однако есть и некоторые ограничения:
- нельзя делать "Include" и "Include_Once": может поплыть дизайн (начинает глючить CSS);
- испробовав кучу вариантов с "Header", единственным вариантом увиделось использование функции "file_get_contents";
- нельзя использовать SEO-ссылки в "echo file_get_contents": почему-то страница 404 недоступна по своему SEO-имени, какое бы имя ни было;
- если на странице есть плагин, показывающий IP, то он будет показывать исключительно IP сервера.

if (($this->error->code) == '404')

     $theme="На сайте Bad-Good.ru произошла ошибка 404.";
     $mailtext=JRequest::getString('HTTP_REFERER', null, 'SERVER'); //Получение ссылки, с которой произошел переход.
     mail("четкий_E-Mail_админа", $theme, $mailtext);

     echo file_get_contents('http://www.bad-good.ru/index.php?option=com_content&view=article&id=172');
}

Обновлено ( 15.11.2013 14:46 )