Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Web Ирбис и Z-Ирбис :  ИРБИС Irbis
 
Как выполнить произвольный PHP-код?
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 20, March, 2008 12:32

День добрый!

Если с java-сценариями все более или менее просто, они выполняються на машине клиента, то как быть с php?

Что делать если мне на странице динамически формируемой cgi-скриптом web-irbis'a надо выполнить произвольный php-код?

Re: Как выполнить произвольный PHP-код?
Пользователь: iLq (IP-адрес скрыт)
Дата: 20, March, 2008 14:09

в мануале есть:
9. Введена команда <!PHP=URI>, позволяющая получить результат выполнения PHP функции.
Параметры передаются строкой URI GET. Адрес и порт сервера могут отличаться от строки URI.
В этом случае перед URI должна стоять строка IP=IP_ADDRESS:IP_PORT,
Например, <!PHP=IP=127.0.0.1:8080,[www.bibl.ru];

не подходит?

Re: Как выполнить произвольный PHP-код?
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 20, March, 2008 17:31

То есть, я свой скрипт ложу в файл script.php, скрипт ложу в корень сайта, и пишу <!PHP=IP=127.0.0.1,script.php> ?

Делал так:
<!PHP=links.php>
и так неработает <!PHP=http://www.e-catalog.mk.ua/links.php>



Редактировано 1 раз. Последний раз 22.03.2008 19:26 пользователем Konstantinus.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 01, September, 2015 20:56

Как в php-скриптах использовать модальные поля, например, имя БД (I21DBN,v2221) или имя команды (C21COM,v2222).
Удалось выполнить внешний php-скрипт через вставку конструкции:
<!PHP=http://127.0.0.1/php/test.php>
Естественно, предварительно создал папку php в папке <--HTTP_PATH--> и выставил соответствующие права.
Как во фреймах вставить произвольный код php?
+
Если создать новый документ с произвольным наполнением и сохранить его в формате rtf, то при просмотре в текстовом редакторе кириллица будет отображена последовательностью \'hh, где hh — это двоичный hex-код символа из таблицы ASCII.
При попытке сохранить результаты поиска в файл rtf не просто с этим расширением, а и с сохранением структуры, то в конечном счете получим крякозяблики. Чтобы корректно сохранить и открыть результирующий файл следует применить функцию &uf('+3W..., т. е. применить декоирование из UTF-8. Но при этом теряется та текстовая информация, которая в модуле АРМ-Каталогизатор была введена с помощью виртуальной клавиатуры. Вместо вставленных символов rtf-viewer отображает знаки вопроса.
Как добиться того, чтобы расформатировать всю запись в неизменном виде? Возможно есть решения, позволяющие перекодировать результат формата в последовательность ESCAPE-команд?



Редактировано 1 раз. Последний раз 01.09.2015 23:14 пользователем woodyfon.

Re: Как выполнить произвольный PHP-код?
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 06, September, 2015 21:16

woodyfon написал(а):
-------------------------------------------------------
> Как в php-скриптах использовать модальные поля,
> например, имя БД (I21DBN,v2221) или имя команды
> (C21COM,v2222).

Вы пробовали передавать значения модельных полей в качестве параметров?
<!PHP=http://127.0.0.1/php/test.php?param1=value1&param2=value2>

> Как добиться того, чтобы расформатировать всю
> запись в неизменном виде? Возможно есть решения,
> позволяющие перекодировать результат формата в
> последовательность ESCAPE-команд?

Боюсь, что единственный вариант -- это написание собственной UNIFOR функции.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 06, September, 2015 22:23

Цитата:
Вы пробовали передавать значения модельных полей в качестве параметров?
<!PHP=http://127.0.0.1/php/test.php?param1=value1&param2=value2>
Откровенно говоря даже не пробовал. Не мог придумать как передать в переменные модальные поля WI. Но затем попробвал конструкцию:
<!PHP=http://127.0.0.1/php/test.php?par1=<?v2221?>&par2=<?v2222?>>
и заработало.
Не знаю насколько это правильно, но буду копать в стороку PHPRtfLite
+
Как в переменную php передать форматный вывод?



Редактировано 2 раз. Последний раз 07.09.2015 00:30 пользователем woodyfon.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, September, 2015 12:33

Использовал из PHPRtfLite класс PHPRtfLite_Utf8. Класс описывается в файле UTf8.php.
Код скрипта:
<?php
require_once 'Utf8.php';
$object = new PHPRtfLite_Utf8();
$text = $_GET['text'];
$str = $object->getUnicodeEntities($text, 'UTF-8');
echo "$str";
?>
Строка в файле формата:
'<!PHP=http://127.0.0.1/php/index.php?text=',&uf('+3E'&uf('6brief')),'>',
В результате формируется файл rtf, в котором выводятся символы в кодировке utf-8 включая спецсимволы и греческий алфавит.
Такой метод работает только при печати одной записи. Если необходимо распечатать несколько записей, в формат выводятся и литералы вида
><!PHP=http://127.0.0.1/php/index.php?text=
Но при этом символы переводятся в Unicode-последовательность. Таким образом в файл записывается результат расформатирования всех записей.
Как выполнить скрипт для каждой записи в отдельности?
Понимаю, что при печати может возникать ошибка 414, но сейчас опробую просто идею. Все-таки непонятно как в php срипте обратиться к данным в записи?



Редактировано 1 раз. Последний раз 08.09.2015 12:46 пользователем woodyfon.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, September, 2015 13:06

Существует ли инструмент для доступа к БД ИРБИСа в виде отдельного расширения для php?

Re: Как выполнить произвольный PHP-код?
Пользователь: Gena (IP-адрес скрыт)
Дата: 08, September, 2015 14:18

Андрей, я могу скинут пример модуля на ПХП, который подключается к ТСР серверу Ирбиса, делает поиск записей, если находит, редактирует их, если не находит, то создает и вносит в них информацию. Это пример. К нему есть открытая документация по протоколу обмена данными между АРМами и сервером Ирбиса. Можно по аналогии дописать свои функции для форматирования записей и печати таблиц.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, September, 2015 15:13

Цитата:
я могу скинут пример модуля на ПХП, который подключается к ТСР серверу Ирбиса, делает поиск записей, если находит, редактирует их, если не находит, то создает и вносит в них информацию. Это пример.
Гена, огромное спасибо. Было бы интересно ознакомиться в такой наработкой. Буду очень признателен. Интересно также было посмотреть на исходный код API J-IRBIS и IRBIS-128.
Цитата:
дописать свои функции для форматирования записей и печати таблиц.
А вот это очень интересно.

Re: Как выполнить произвольный PHP-код?
Пользователь: Gena (IP-адрес скрыт)
Дата: 08, September, 2015 16:26

J-IRBIS и IRBIS-128 - это коммерческие продукты, потому их исходников в открытом доступе нет и быть не может. Но есть свои наработки по работе с ТСР сервером Ирбиса из ПХП.



Редактировано 2 раз. Последний раз 12.12.2015 06:46 пользователем Gena.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 08, September, 2015 23:37

Цитата:
J-IRBIS и IRBIS-128 - это коммерческие продукты, потому их исходников в открытом доступе нет и быть не может.
Естественно, исходный код интересно посмотреть с технической точки реализации взаимодействия с сервером и форматированием записей.
Стал разбирать код, неясно где прописывается функция UpDateRecord. Сдается мне, что одного файла недостаточно, необходимы описания классов, хотя нигде не увидел создание объектов.
Гена, Вы бы не могли рассказать более подробно рассказать, как хотя бы проверить конект к серверу?

Re: Как выполнить произвольный PHP-код?
Пользователь: Gena (IP-адрес скрыт)
Дата: 09, September, 2015 08:07

В скрипте есть функция SendCMD. Именно она отправляет команды серверу Ирбиса и принимает ответы от него. В этой функции есть вот такой кусочек:

/*print "\n";
      print "\n";
      print "------------------Send--------------\n";
      print $pp."\n";
      print "------------------------------------\n";
      print "------------------Return------------\n";
      print $res."\n";
      print "------------------------------------\n";
      print "\n";
      print "\n";*/

Если его раскомментировать, то при каждом обмене информации будет выводится отправляемая команда и ответ от сервера. Я этот кусок использую для отладки работы.

Классы я тут не использую. Не было задачи строить что-то серьезное. Тут на самом деле все достаточно примитивно. Есть набор обязательных действий при работе с сервером. Это как минимум выполнение команд соединение и разрыва соединения. В этом скрипте они реализованы функциями Connect() и DisConnect(). Фактически у меня любая функция выполняет подготовку текстовой строки - команды, которая будет отправляться серверу. Как бы и все.

Re: Как выполнить произвольный PHP-код?
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 08, December, 2015 18:00

Вообще замыкание на Джумлу - это путь... ену вобщем не правильный.
Сейчас мигрируем с самописного движка на Вордпресс. Быбло бы идеально реализовать функционал веб-ирбиса через php.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 09, December, 2015 11:49

Чтобы реализовать функционал на php надо иметь готовое развивающиеся расширение. Пока такого нет и врятли в скором будущем появится

Re: Как выполнить произвольный PHP-код?
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 12, December, 2015 00:16

Я понимаю. Просто гугль дает код для интеграции поиска в дизайн сайта. У меня гугл ищет по ЭК.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 01, September, 2016 12:19

Возможно ли выполнить php-скрипт в файле формата?

Re: Как выполнить произвольный PHP-код?
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 02, September, 2016 13:19

woodyfon написал(а):
-------------------------------------------------------
> Возможно ли выполнить php-скрипт в файле формата?

Иначе как тем способом, который описан в разделе документации "Директивы вызова внешнего скрипта" -- нет. Но этот способ Вы уже знаете. Конкретизируйте вопрос, пожалуйста.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 02, September, 2016 13:33

Кирилл,
В записи содержится имя графического файла. Средствами php (в частности Imagick) необходимо выполнить некоторые действия (создать превью) и вывести на страничку. Форматирование данных проходят в файлах формата. Но можно ли выполнить php-скрипт, чтобы затем вывести результаты его исполнения?



Редактировано 1 раз. Последний раз 02.09.2016 23:14 пользователем woodyfon.

Re: Как выполнить произвольный PHP-код?
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 11, September, 2016 10:55

woodyfon написал(а):
-------------------------------------------------------
>необходимо
> выполнить некоторые действия (создать превью) и
> вывести на страничку. Форматирование данных
> проходят в файлах формата. Но можно ли выполнить
> php-скрипт,

В данном случае не вижу смысла в использовании PHP. Целесообразно использовать либо консольное приложение (его можно запускать через стандартный UNIFOR), которое будет сохранять "превью" в графический файл, либо писать собственный UNIFOR, решающий задачу обработки изображения.

Попробуйте найти консольные приложения для преобразования графики. Их использование было бы самым простым вариантом.

Re: Как выполнить произвольный PHP-код?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 13, September, 2016 08:22

Согласен, что-то перемудрил. Ведь можно просто в стилях тега изображения прописать требуемую ширину.



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.