Разделы

  
 

Доступ к массиву $_SESSION

Здравствуйте.

Во внешнем файле php конфигурации плагина к tinymce потребовалось получить имя авторизованного пользователя: полагаю следующим образом:

session_start();
$username = $_SESSION['webShortname'];
$нужныйМнеПараметр='...'.$username;


Ничего не получается. Файл как будто не имеет доступа к массиву.

Может быть это важно: плагин вызывается за счёт javascrip и никак не регистрируется в модикс, только лишь в чанке.

И ещё вопрос относительно сессий, на сколько просто получить данные из массива $_SESSION не имея доступа к административной части? Я просидел целый день сяк и этак, я как нападающий отдыхаю, это понятно… но
  • 0
  • 10 июня 2010, 20:06
  • atomoc
  • 7

Работа с сылками в php

Всем привет!

Работая со своим сниппетом столкнулся с одной сложностью.
Конкретный пример:
— создал таблицу в базе данных, сделал 5 строк в каждой по 5 параметров (столбцов).
— вывел на страницу сайта с помощью сниппета эту таблицу. И в данном виде настроил чтобы отображалось изначально только 3 параметра для каждой строки.
— и вот теперь хочу сделать так, чтобы нажав на название одной из строк у меня открылась вся информация выбранной строки (то есть все 5 параметров), а список с остальными убирался.

Проблема в том, что я не могу понять логику как это должно работать в php. На что должна ссылаться ссылка и откуда берется внешний вид оформления страницы с подробным описанием (то есть с 5 параметрами).
Подскажите, пожалуйста как лучше сделать или где поискать ответ.

Заранее большое спасибо!

Ошибка в document.parser.class.inc.php

Сайт работает без проблем когда на сервере стоит PHP 4.x.x
Использую modx-1.0.3



Как только переключаю на сервере PHP на версию 5.x, выползает ошибка
Fatal error: Cannot redeclare userip() (previously declared in /.../www/htdocs/manager/includes/document.parser.class.inc.php(770): eval()'d code:120) in /.../www/htdocs/manager/includes/document.parser.class.inc.php(770): eval()'d code on line 138


в файле document.parser.class.inc.php



вот вся функция


    function evalSnippet($snippet, $params) {
        $etomite= $modx= & $this;

        $modx->event->params= & $params; // store params inside event object
        if (is_array($params)) {
            extract($params, EXTR_SKIP);
        }
        ob_start();
        $snip= eval ($snippet);
        $msg= ob_get_contents();
        ob_end_clean();
        if ($msg && isset ($php_errormsg)) {
            if (!strpos($php_errormsg, 'Deprecated')) { // ignore php5 strict errors
                // log error
                $this->logEvent(1, 3, "<b>$php_errormsg</b><br /><br /> $msg", $this->currentSnippet . " - Snippet");
                if ($this->isBackend())
                    $this->Event->alert("An error occurred while loading. Please see the event log for more information<p />$msg");
            }
        }
        unset ($modx->event->params);
        return $msg . $snip;
    }


Хотелось бы узнать в чем хотя бы проблема?

Требуется программист для создания сайтов различной сложности на MODx

Здравствуйте, дорогие!

Нам в небольшую, но активно развивающаяся студию требуется толковый php-javascript программист, который умел бы хорошо верстать (блочно, валидно, кроссбраузерно) для создания сайтов на MODx.

Планируемая заработная плата — 25-30 тысяч рублей + премии.
Возможен гибкий график для студентов :)

Мы находимся в самом центре Москвы — ул. Большая Бронная, д.23, стр.1

Посмотреть сайт студии можете тут — www.SimpleDream.ru (в данный момент готовится новая версия сайта);

Электронная почта — info@simpledream.ru
Телефоны для связи:
+7 905 774-26-90 (Андрей),
+7 926 355-46-01 (Виталий),
+7 (495) 972-25-85 (Офис).

Запретить выполнение php на страницах

Столкнулся с такой штукой.
Добавил на страницы подсветку код SyntaxHighlighter. Добавляю php-код, а он выполняется.
В свойствах страницы стоит html-страница.
Код:
http://dpaste.com/182804/
  • 0
  • 12 апреля 2010, 17:25
  • rolph
  • 4

Проверка TV-параметра

В моем шаблоне есть tv-параметр doc, тип — file(хотя подумываю сделать Text ).

При заполнении контента выбирается файл, который потом подставляется в ссылку скачать

Может быть кто-нибудь делал проверку заполнения или можно функцией какой-нибудь внутренней сделать, чтобы если нет файла либо не отображалась ссылка, либо вставлялся другой текст, например скачать

Как вариант пока вижу написание сниппета с использованием php.
  • 0
  • 15 января 2010, 15:24
  • rolph
  • 3

Автоматическое создание дочерних страниц для документа с заданным шаблоном. Как?

Коллеги, я в трауре в тупике. Необходимо, чтобы при создании документа с определенным шаблоном автоматически создавался его дочерний документ. Сразу оговорюсь, что в PHP я не дока. Поискав на официальном форуме, я, воспользовавшись разрозненными примерами, попытался написать плагин, который автоматизировал бы это действие. Код плагина приведен ниже:


$e = &$modx->Event;
if ($e->name == "OnBeforeDocFormSave") {
if (($mode == "new")&&($template == 4)) {
$table = $modx->getFullTableName('site_content');
                  $fields = array(
                  'type'  =>  'document',
                  'content' => 'Содержание документа-родителя',
                  'pagetitle'   =>'Родительский документ',
                  'longtitle'   => 'Родительский документ',
                  'alias' => 'parent',
                  'contentType' => 'text/html',
                  'published'   => '0',
                  'isfolder'    => '1', 
                  'template'    => '4', 
                  'cacheable'   => '0',
                  'createdon'   => time(),
                  'editedon'    => time(),
                  'publishedon' => time(),
                  'hidemenu'    => '0',
                  );
              $modx->db->insert($fields, $table);
              
              $parent = $modx->db->getInsertId();

                  $fields = array(
                  'type'  =>  'document',
                  'content' => 'Содержание дочернего документа',
                  'pagetitle'   =>'Дочерний документ',
                  'longtitle'   => 'Дочерний документ',
                  'alias' => 'child_doc',
                  'contentType' => 'text/html',
                  'published'   => '0', 
                  'parent'  => $parent,
                  'isfolder'    => '0', 
                  'template'    => '6', 
                  'cacheable'   => '0',
                  'createdon'   => time(),
                  'editedon'    => time(),
                  'publishedon' => time(),
                  'hidemenu'    => '0',
                  );
              $modx->db->insert($fields, $table);
              return;
    }
 }


Теперь, собственно, сама проблема. По выполнению плагина создается родительский документ/папка parent и в нем его дочерний документ child_doc. Но, кроме дочернего документа в папке создается еще один, пустой документ. Который мне, естественно, не нужен. Может кто-нибудь уже сталкивался с подобной проблемой?
Учитывая мои более чем скромные знания предмета программирования, я хотел бы попросить у коллег по сообществу дельного совета или помощи. Спасибо заранее.
  • +1
  • 19 сентября 2009, 00:07
  • WebraumZ
  • 4

{}-синтаксис в любом сниппете, или как выполнить PHP-код на странице

И так, решил опубликовать давнишнее решение. Решение позволяет писать вот такое для любого сниппета установленного в MODx без его (сниппета) модификации:
[!snippet? ¶m=`{php_code}`!]


где php_code — любой достаточно простой php-код.

Сразу оговорюсь, модифицировать ядро MODx Мы не будем, поэтому решение будет работать даже при обновлении MODx (не до Revolution конечно).



( Читать дальше )

Применение inline-выражений непосредственно в параметрах сниппетов.

Вопрос аудитории на засыпку, какова надежность таких конструкций:
[!snippet? ¶m=`{php_code}`!]

где php_code — произвольный код небольшого содержания, скажем обычное выражение: $_SESSION['webInternalKey'] или просто 2*2.
Хороший ли это стиль программирования?
Каков шанс злоумышленика внедрить чужеродный PHP код?
  • 0
  • 15 сентября 2009, 16:15
  • grinant
  • 14

Хочу озадачить transalias

Друзья, а как вы думаете, реально сделать так, чтобы значение tv-параметра (русский текст) перед выводом на страницу (ну или куда я захочу), предварительно обрабатывалось штатным плагином TransAlias, по тем же самым правилам, по которым обрабатывается алиас каждой страницы?

Поскольку php я так и не удосужился освоить, буду очень признателен за более развернутый ответ :))))))))))
  • 0
  • 4 сентября 2009, 11:51
  • banev
  • 17