Решил прикрепить к своему компоненту, AJAX. Начал с библиотеки Ext JS, но проблема актуальна и для других библиотек. Вкратце о рабочей среде: есть два файла один стандартный для компонента "admin.cname.html.php" другой серверный обработчик AJAX запросов "ajax_handler.php". Привожу относящиеся к теме содержимое этих файлов ---------------------------------admin.cname.html.php------------------------------ <?php defined('_VALID_MOS') or die('Доступ запрещен.'); ?> <SCRIPT> Ext.onReady(function(){ Ext.get('okButton').on('click', function(){ var msg = Ext.get("msg"); msg.load({ url: "<?php echo $mosConfig_live_site; ?>ajax_handler.php", params: "name=" + Ext.get('name').dom.value, text: "Загрузка..." }); msg.show(); }); }); </SCRIPT> <div id="msg" style="visibility: hidden"></div> Name: <input type="text" id="name" /><br /> <input type="button" id="okButton" value="OK" width="40px" /> ------------------------------admin.cname.html.php--------------------------------- ------------------------------ajax_handler.php-------------------------------------- <?php if(isset($_POST['name'])) { echo 'Answer Server: '.$_POST['name']; } ?> ------------------------------ajax_handler.php-------------------------------------- Суть работы не хитрая, в файле admin.cname.html.php есть скрытый блок <DIV> с ID=MSG, в поле NAME вводим сообщение и при нажатии кнопки JavaScript передает, методом POST, сообщение нашему обработчику ajax_handler.php. Обработчик возвращает обратно в admin.cname.html.php, строку "Answer Server: Сообщение", эта строка появляется в блоке <DIV> с ID=MSG, естественно без перезагрузки страницы 8) . Этот простой пример можно реализовать на любой библиотеке AJAX. Но! Вы наверняка заметили что в файле ajax_handler.php, нету "секюрной" строки: defined('_VALID_MOS') or die('Доступ запрещен.'); Ее там нету не потому что я забыл ее вставить ;D , а потому что такой метод безопасности не работает с внешним обработчиком, его мы вызываем как внешний файл и он не имеет константы _VALID_MOS!!!! Значит, мой обработчик можно вызвать по "абсолютному" пути: http://server/joomla/administrator/components/com_cname/ajax_handler.php потом передать необходимые переменны методом POST и практически получить доступ к админскому компоненту без аутентификации!!! И к тому же такие переменные как "$mosConfig_live_site" тоже работать не будут. Вопрос: как реализовать безопасность в таких обработчиках, которые не связаны с обще системой, а запускаются отдельно из JavaScript-та?
Ответ: Компонент с AJAX вопрос по безопасности с defined('_VALID_MOS') $mosConfig_live_site можно получить просто включив файл "../../../и_сколько_надо_точек/configuration.php"
Ответ: Компонент с AJAX вопрос по безопасности с defined('_VALID_MOS') Dead Krolik, а с _VALID_MOS как быть? и классами базы? инклудить database.php, только так?
Ответ: Компонент с AJAX вопрос по безопасности с defined('_VALID_MOS') Cardinal, теме аж пять месяцев. Может не стоит кидать непонятную фразу не по теме и ставить в конце знак вопроса?
Ответ: Компонент с AJAX вопрос по безопасности с defined('_VALID_MOS') я думаю, стоит Ведь я воспользовался поиском по форуму сначала Возникла проблема - в компоненте есть аякс, разумеется, во внешнем файле все полезное происходит, ajax.php, на который и посылается аякс-запрос (или как правильно сказать, не знаю В этом файле неоткуда взятся этой константе, да и всему остальному от джумлы, как быть с безопасностью, и как вообще надо делать)?
Ответ: Компонент с AJAX вопрос по безопасности с defined('_VALID_MOS') Аякс.пхп идет в топку. В документации я ясно написал выход - использовать index2.php.