Не могу понять defined('_JEXEC')

Тема в разделе "Программирование", создана пользователем DKraev, 12.07.2013.

  1. DKraev
    Offline

    DKraev <i>(aka gft)</i>

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    216
    Пол:
    Мужской
    Здравствуйте.

    Всем известно что такое defined('_JEXEC') or die('Restricted access'); - запрет прямого доступа. Т.е. если обратиться к файлу, набрав адрес в браузере мы увидим, что нам туда нельзя. Joomla же успешно работает с этим файлом.

    Но вот никак не могу понять особенность использования defined('_JEXEC').

    К примеру у меня есть модуль калькулятора. В tmpl/default.php модуля у меня форма для расчета. Посредством ajax запроса я посылаю данные в доп. файл res.php, в котором произвожу расчет и выдаю готовый результат назад в default.php.

    Если я добавлю в файл res.php строку defined('_JEXEC') or die('Restricted access'); то расчет не будет произведен, так как я получу Restricted access

    Почему меня не пускает? Ведь я обращаюсь к данному файлу из default.php модуля, а не напрямую.

    Примерный запрос:

    Код (html):
    1. function pognali() {
    2.         var hours = jQuery('#hours').val();
    3.         var gruzchik = jQuery('input[name=gruzchik]:checked').val();
    4.         var kol_gruzchik = jQuery('#kol_gruzchik').val();
    5.      
    6.         jQuery.ajax({
    7.             type: "POST",
    8.             url: "modules/mod_month/res.php",
    9.             data: {'hours':hours, 'gruzchik':gruzchik, 'kol_gruzchik':kol_gruzchik},
    10.             success: function(html) {
    11.                 jQuery("#ajax").empty();
    12.                 jQuery("#ajax").append(html);
    13.             }
    14.         });
    15.  
    16.     }


    Зависит ли это от способа обращения к файлу? В моем случае:
    Код (html):
    1. url: "modules/mod_month/res.php",
     
  2.  
  3. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    потому и не пускает:
    у тебя идёт прямое обращение к этому файлу, а не через index.php в котором как раз и делается это определение
    проще говоря ты AJAX'ом обращаешься к этому файлу по адресу сайта и по пути на сервере

    если не получится (а скорее всего и не получится) попробуй обратиться, указав или GET или POST
    тогда просто в кокисы запихни какую нибудь переменную, а в своём файле её прочитай, при отсутсвии оной - ни каких счётов не делай
     

Поделиться этой страницей

Загрузка...