Joomla 1.0 jQuery + _VALID_MOS

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

  1. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Всем привет.

    Решил интегрировать jQuery в компонент и сразу же наткнулся на подводные камни. Приведу простой пример(подобный случай уже обсуждался на форуме, но ничего толкового я там не вычитал):

    Имеется компонент "Компонент1", соответственно имеем файл "компонент1.пхп" в который я, с помощью jQuery.ajax пытаюсь получить данные из файла library.php который лежит в папке компонента и в котором находятся функции выборки контента из БД. Для работы с БД я использую стандартный джумловский database, соответственно для этого мне нужен
    Код (PHP):
    1. defined ('_VALID_MOS')
    .

    Внимание, вопрос :) : "Как передать этот VALID_MOS через $.ajax, для того что бы обезопасить компонент ?"
     
    Последнее редактирование модератором: 12.11.2008
  2.  
  3. Offline

    Viper Недавно здесь

    Регистрация:
    26.10.2006
    Сообщения:
    46
    Симпатии:
    2
    Пол:
    Мужской
    читать нужно было FAQ. В нем написано, что такого рода запросы перенаправляются в index2.php.
    для примера:
    Код (CODE):
    1. $.ajax({
    2. type: "POST",
    3. url: "'.$mosConfig_live_site.'/index2.php?option=com_&Itemid='.$Itemid.'&task=opinion&no_html=1",
    4. data: "option=com_&itemid='.$Itemid.'&task=opinion&opinions=add&id='.$id.'&ip='.$ip.'&cm_uname='.$my->username.'" + "&captcha=" + captcha + "&cm_content=" + content,
    5. cache: false,
    6. success: function(){...


    и уже в вашем library.php
    делаете:
    Код (CODE):
    1. switch ($task) {
    2. case 'opinion_new':
    3.         include('components/com_kinoarhiv/details/kinoarhiv.opinion.php');
    4.         showComments();
    5.         break;
    6. ...
     
    omfgpanda нравится это.
  4. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    спасибо большое )))

    Впредь буду более внимательным )
     
  5. Offline

    Kovryga Недавно здесь

    Регистрация:
    05.05.2008
    Сообщения:
    4
    Симпатии:
    0
    Пол:
    Мужской
    Приветствую!

    доделываю другой компонент (JEvents) - Joomla 1.5., Jquery
    необходимо передать данные и обработать их в файле 1.php
    как правильно передать данные (в url к файлу) и что указать в файле 1.php, чтобы использовать API Joomla для работы с БД?
     
  6. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
  7. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Код (CODE):
    1. $.ajax({
    2. type: "POST",
    3. url: "index2.php?option=com_mycomponent&param=ok&no_html=1",
    4. data: "option=com_mycomponent&param=ok&no_html=1",
    5. cache: false,
    6. success: function(msg){
    7.  
    8. alert(msg);
    9.  
    10. }
    11. });


    что мы делаем: option означает к какому компонету нада обратиться (com_mycomponent - название вашего компонента), param = ok - нужен для того что бы инклудить ваш файл 1.php в компонент, т.е. в исполняющем файле вашего компонента нужно написать:

    Код (PHP):
    1. $param = mosGetParam($_REQUEST, 'param', null ); //получаем значение передоваемого параметра
    2. if ($param == "ok"){                                             //проверяем значение параметра
    3.   include_once("1.php");                                       //если все хорошо, подключаем файл с функциями
    4. }


    т.е. есле у вас в 1.php написанно

    Код (PHP):
    1. echo "Привет, все ништяк";


    то после приведённого выше запроса ты получишь эту надпись на экране.

    З.Ы,: использование index2.php вместо стандартного index.php и параметра no_html=1 нужно для получения хтмл-кода самого компонента, а не всего шаблона.

    забыл, в 1.php в самом начале не забудь поставить

    Код (PHP):
    1. defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
    2. global $database;
     
  8. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    >забыл, в 1.php в самом начале не забудь поставить
    Лучше в компоненте.
     
  9. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    ну в компоненте само собой ))))

    я щас как раз вожусь с переводом движка джумлы на аякс.... и у меня есть небольшая проблемка - когда я пытаюсь вывести что-нибуть из com_content, то после загрузки полученных данных в див меня перекидывает на пустую страницу, это происходит только с ком_контент, со всеми остальными все нормально работает (

    З,Ы,: использую jQuery фреймворк.
     
  10. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
  11. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    там тупо где-то стоит редирект, но я не могу его найти (((
     
  12. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    !bump .... плз... .спасите ....
     

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

Загрузка...