Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Страницы: 123>>
Страница: 1 из 3
Клиентская библиотека ИРБИС64 на языке PHP
Пользователь: IAK (IP-адрес скрыт)
Дата: 14, April, 2016 13:03

Собственно, вопрос



Редактировано 1 раз. Последний раз 07.11.2016 08:20 пользователем Alio.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Карауш (IP-адрес скрыт)
Дата: 15, April, 2016 18:09

Вопрос нерешаемый. Только если напишите лично модуль для php. Ну и логику СУБД расширить нужно дальше, чем реляционные СУБД.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Gena (IP-адрес скрыт)
Дата: 16, April, 2016 18:46

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

Скрипт собран на первом же попавшемся в инете примере PHP сокетного соединения, так что он может быть не оптимальным.



Редактировано 1 раз. Последний раз 16.04.2016 18:47 пользователем Gena.

Вложения: irbis.php (1.4KB)  
Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 18, April, 2016 22:42

Непонятно почему выбрано было такое решение, ведь php-серверный язык, обычно сервер не смотрет во внешний мири и здесь логичнее было использовать уже готовое решение шлюз Web-ирбис. Усилия, время, материальные рсурсы, потраченные на разработку в php будут, наверное, сопоставимы с преобретением вышеназванного модуля. Также стоит посмотреть в торону i128.
IAK, перечень необходимый функций Вы также можете посмотреть в файле irbis64_client.doc. Идеальным решение, конечно, было написание собственной библиотеки доступа.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: IAK (IP-адрес скрыт)
Дата: 19, April, 2016 10:35

Спасибо большое, Геннадий. Я понял.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: IAK (IP-адрес скрыт)
Дата: 20, April, 2016 08:03

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

товарищ, скажите, как мне получить от web-ирбиса записи по запросу в "сыром" формате (поля и подполя), не влезая в его настройки?

а PHP и локально очень даже запускается

---
"Гейтс, Гейтс и только Гейтс всегда виноват во всех неприятностях, которые случаются у программистов" (С) Алекс Экслер

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 20, April, 2016 14:42

WI - это шлюз, поля и подполя - это данные. Т. е. сначала надо сделать запрос и вывести с помощью формата результат.
Удачи в php...

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 04, May, 2016 15:45

Пишу класс для работы с сервером ИРБИС64
Сейчас умеет:
1. Подключаться и авторизоваться
2. Завершать сессию (автоматически)
3. Запрос максимального MFN в выбранной
4. Получение списка терминов словаря (с количеством ссылок)
5. Получение списка MFN записей, соответствующих терминам словаря
6. Чтение конкретной записи без форматирования
7. Прямой / Последовательный поиск. (По запросу и по unifor-условию отбора)

<?php
error_reporting(E_ALL);
header('Content-Type: text/plain; charset=utf8');

class irbis64 {
	private $ip = '', $port = '', $sock;
	private $login = '', $pass = '';
	private $id = '', $seq = 1;

	public $arm = 'C'; // Каталогизатор
	public $db = 'IBIS'; // 
	public $server_timeout = 30;
	public $server_ver     = '';
	public $error_code = 0;

	function __construct() { }
	function __destruct() { $this->logout(); }

	function set_server($ip, $port = 6666) { $this->ip = $ip; $this->port = (int)$port; }
	function set_user($login, $pass) { $this->login = $login; $this->pass = $pass; }
	function set_arm($arm) { $this->arm = $arm; }
	function set_db($db) { $this->db = $db; }
	function set_id($id) { $this->id = $id; }

	function error($code = '') {
		if ($code == '') $code = $this->error_code;
		
		switch ($code) {
		case '0': return 'Ошибки нет';
		case '1': return 'Подключение к серверу не удалось';

		case '-3333': return 'Пользователь не существует'; 
		case '-3337': return 'Пользователь уже зарегистрирован'; 
		case '-4444': return 'Пароль не подходит'; 

		case '-140':  return 'MFN за пределами базы'; 
		case '-5555': return 'База не существует'; 
		case '-400': 	return 'Ошибка при открытии файла mst или xrf'; 
		case '-603': 	return 'Запись логически удалена'; 
		case '-601': 	return 'Запись удалена'; 

		case '-202': 	return 'Термин не существует'; 
		case '-203': 	return 'TERM_LAST_IN_LIST'; 
		case '-204': 	return 'TERM_FIRST_IN_LIST'; 
		
		
		}
		return 'Неизвестная ошибка: ' . $code;
	}

	function connect() {
		$this->sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
		if ($this->sock === false) return false;
		return (@socket_connect($this->sock, $this->ip, $this->port));
	}

// Авторизация
	function login() {
		$packet = implode("\n", array('A', $this->arm, 'A', $this->id, $this->seq, '', '', '', '', '', $this->login, $this->pass));
		$packet = strlen($packet)."\n".$packet;
		$answer = $this->send($packet);
		if ($answer === false) {
			$this->error_code = 1;
			return false;
		}
		
		$this->error_code = $answer[10];
		if ($this->error_code != 0) return false;
		$this->server_timeout = $answer[11];
		$this->server_ver     = $answer[4];
		return true;
	}

// Завершение сессии
	function logout() {
		$packet = implode("\n", array('B', $this->arm, 'B', $this->id, $this->seq, '', '', '', '', '', $this->login));
		$packet = strlen($packet) . "\n" . $packet;
		$answer = $this->send($packet);
		if ($answer === false) return false;

		$this->error_code = $answer[10];
		if ($this->error_code != 0) return false;
		return true;
	}

// Получить максимальный MFN в базе
	function mfn_max() {
		$packet = implode("\n", array('O', $this->arm, 'O', $this->id, $this->seq, '', '', '', '', '', $this->db));
		$packet = strlen($packet) . "\n" . $packet;
		$answer = $this->send($packet);
		if ($answer === false) return false;

		$this->error_code = $answer[10];
		if ($this->error_code > 0) {
			$this->error_code = 0;
			return $answer[10];
		} else {
			return false;
		}
	}

// Чтение словаря
	function terms_read($term, $num_terms = '', $format = '') {
		// см. инструкцию сервера "7.8	Функции работы со словарем базы данных"
		// если указан формат, по в результат добавляются по одной записи для каждой строки словаря
		$packet = implode("\n", array('H', $this->arm, 'H', $this->id, $this->seq, '', '', '', '', '', $this->db, $term, $num_terms, $format));
		$packet = strlen($packet) . "\n" . $packet;

		$answer = $this->send($packet);
		if ($answer === false) return false;
		
		$this->error_code = $answer[10];
		
		if ($this->error_code == 0) {
			// массив $terms
			$terms = array();
			$c = count($answer) - 1;
			for ($i = 11; $i < $c; $i++) {
				$terms[] = $answer[$i]; // формат ЧИСЛО_ССЫЛОК#ТЕРМИН=ЗНАЧЕНИЕ
			}
			return $terms;
		} else return false;
	}

// Получить список ссылок термина 
	function term_records($term, $num_postings = '', $first_posting = '') {
		// $term - список терминов для поиска. формат: "K=фантастика\nK=природа" = вывести список соответствующих хотя бы одному из терминов
		// $num_postings = количество возвращаемых записей из списка, если = 0 то возвращается MAX_POSTINGS_IN_PACKET записей
		// если $first_posting = 0 - возвращается только количество записей, если больше - указывает смещение первой возвращаемой записи из списка
		$first_posting = (int)$first_posting;

		$packet = implode("\n", array('I', $this->arm, 'I', $this->id, $this->seq, '', '', '', '', '', $this->db, $num_postings, $first_posting, '', $term));
		$packet = strlen($packet) . "\n" . $packet;

		$answer = $this->send($packet);
		if ($answer === false) return false;
		
		$this->error_code = $answer[10];
		
		/* основной формат для результатов поиска
				MFN#TAG#OCC#CNT (см. инструкцию к серверу "6.5.3.1	Обыкновенный формат записи IFP")
					MFN – номер записи;
					TAG – идентификатор поля назначенный при отборе терминов в словарь;
					OCC – номер повторения;
					CNT – номер термина в поле.
		*/
		
		if ($this->error_code == 0) {
			$records = array();
			
			$c = count($answer) - 1;
			for ($i = 11; $i < $c; $i++) {
				$ret = explode('#', $answer[$i]);
				// для упрощения возвращаем только список MFN 
				// или количество найденных записей (при $first_posting == 0)
				$records[] = $ret[0];
			}
			return $records;
		} else return false;
	}

// Получить запись (массив полей без применения формата)
	function record_read($mfn, $lock = false) {
		$packet = implode("\n", array('C', $this->arm, 'C', $this->id, $this->seq, '', '', '', '', '', $this>db, $mfn, $lock ? 1 : 0));
		$packet = strlen($packet) . "\n" . $packet;

		$answer = $this->send($packet);
		if ($answer === false) return false;

		$this->error_code = $answer[10];
		if ($this->error_code != 0) return false;

		$fields = array();
		$c = count($answer) - 1;
		for ($i = 13; $i < $c; $i++) {
			$fields[] = $answer[$i];
		}
		return $fields;
	}
	
// Поиск записей по запросу
	function records_search($search_exp, $num_records = 1, $first_record = 0, $format = '@brief', $min = '', $max = '', $expression = '') {
		// $search_exp = выражение для прямого поиска
		//		IBIS "I=шифр документа"
		//		IBIS "MHR=место хранения экз-ра"
		//		IBIS "K=ключевые слова"
		//		RDR "A=фио читателя"

		// $num_records = ограничение количества выдаваемых записей
		// 0 - возвращается количество записей не больше MAX_POSTINGS_IN_PACKET 

		// $first_record = задает смещение с какой записи возвращать результаты
		// 0 - возвращается только количество найденных записей

		// $format = @ - оптимизированный (см. описание сервера "7.9.1 Поиск записей по заданному поисковому выражению (K)")
		// $format = '@brief' - оптимизированный сокращенный формат (см. BRIEF.PFT - выводится в список записей в окне каталогизатора)
		
		// $min, $max, $expression - для последовательного поиска. $expression = условие отбора

		$packet = implode("\n", array('K', $this->arm, 'K', $this->id, $this->seq, '', '', '', '', '', $this->db, $search_exp, $num_records, $first_record, $format, $min, $max, $expression));
		$packet = strlen($packet) . "\n" . $packet;

		// <debug>
		echo 'Поиск записей по ключу ' . $search_exp . PHP_EOL;
		if ($expression != '') echo 'Уточняющее условие ' . $expression . PHP_EOL;
		// </debug>

		$answer = $this->send($packet);
		if ($answer === false) return false;

		$this->error_code = $answer[10];
		if ($this->error_code != 0) return false;

		$ret['found'] = $answer[11]; // количество найденных записей

		$c = count($answer) - 1;
		for ($i = 12; $i < $c; $i++) {
			$ret['records'][] = $answer[$i];
		}
		return $ret;
	}

	function send($packet, $debug = false) {
		if ($this->sock === false) return false;
		if (!$this->connect()) return false;
		$this->seq++;

		if ($debug) echo PHP_EOL . '>> ' . str_replace("\n", '\n ', $packet) . PHP_EOL;
		socket_write($this->sock, $packet, strlen($packet));
		$answer = '';
		while ($buf = @socket_read($this->sock, 2048, PHP_NORMAL_READ)) {
			$answer .= $buf;
		}
		socket_close($this->sock);
		if ($debug) echo '<< ' . str_replace("\r\n", '\r\n ', $answer) . PHP_EOL;
		return explode("\r\n", $answer);
	}
}

/////////////////////////////////////////////////////////////////////

	$irbis = new irbis64(); 

	$irbis->set_user('1', '1'); // логин, пароль
	$irbis->set_arm('C');       // C - Каталогизатор
	$irbis->set_id('388623');   // Идентификатор сессии
	$irbis->set_server('192.168.0.2', 6666);

	if ($irbis->login()) {

/* Пример для поиска книги (ПО АВТОРУ "Иванов..." ИЛИ "Петров...") И (ВИД ДОКУМЕНТА = ОДНОТОМНИК ИЛИ МНОГОТОМНИК) И (КЛЮЧЕВЫЕ СЛОВА СОДЕРЖАТ "фантастика")
		$irbis->set_db('IBIS');
		$search_exp = '("A=Иванов$" +"A=Петров$") * ("V=03" + "V=05") * ("K=фантастика$")';
		$ret = $irbis->records_search($search_exp, 1000, 1, '@brief');
		if ($irbis->error_code != 0) echo $irbis->error() . PHP_EOL;
		print_r($ret);
*/

/* Пример для поиска читателя, имя которого содержит букву "М"
		$irbis->set_db('RDR');
		$search_exp = '"A=$"';
		$ret = $irbis->records_search($search_exp, 1000, 1, '@brief','','',"!if (v11:'М') then '1' else '0' fi");
		if ($irbis->error_code != 0) echo $irbis->error() . PHP_EOL;
		print_r($ret);
*/

/* Пример для получения максимального MFN базы IBIS
		$irbis->set_db('IBIS');
		$ret = $irbis->mfn_max();
		if ($irbis->error_code != 0) echo $irbis->error() . PHP_EOL;
		print_r($ret);
*/

/* Пример получения терминов словаря АВТОРЫ базы IBIS
		$irbis->set_db('IBIS');
		$ret = $irbis->terms_read('A=', 10);
		if ($irbis->error_code != 0) echo $irbis->error() . PHP_EOL;
		
		// формат результата ЧИСЛО ССЫЛОК # ТЕРМИН СЛОВАРЯ
		print_r($ret);
*/


/* Пример получения записей по термину словаря  */
		$irbis->set_db('IBIS');
		$ret = $irbis->term_records("K=природа", 0, 1);
		if ($irbis->error_code != 0) echo $irbis->error() . PHP_EOL;
		echo implode(',', $ret);


		// Вывод фотографии
/*		foreach ($ret as $field) {
			$field = explode('#', $field, 2);
			if ($field[0] == 953) {
				$field = parse_field($field[1]);
				if (isset($field['B'])) {
					$res = preg_replace_callback('/%([A-F0-9]{2})/', function ($matches) {
						return pack('H2', $matches[1]);
					}, $field['B']);
					header('Content-type: image/jpeg;');
					echo $res;
				}
			}
		}*/
		echo PHP_EOL;

	} else {
		echo $irbis->error();
	}

/*	function parse_field(&$field) {
		$ret = array();
		preg_match_all("/[\1f\^](.)([^\1f\^]+?)/U", $field, $matches, PREG_SET_ORDER);
		foreach ($matches as $match) {
			$ret[(string)$match[1]] = $match[2];
		}
		return $ret;
	}
*/
?>

Периодически обновляю



Редактировано 10 раз. Последний раз 06.05.2016 10:38 пользователем zagzag.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Gena (IP-адрес скрыт)
Дата: 06, May, 2016 08:43

Здорово! У меня никогда не хватало терпения организовать подключение в виде полноценного класса. Есть предложение перенести эту ветку в раздел "Опыт и разработки пользователей". Там уже есть наработки по подключению к серверу на C#, так что ваша работа там будет очень к месту!

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 06, May, 2016 10:32

Перенесите тему, если считаете нужным.

Надеюсь кому-нибудь пригодится этот класс.

Конечно, хотелось бы сделать класс более универсальным, но пока буду добавлять только те функции, которые необходимы мне.

Предложения по доработке принимаются ;)

PS
Важно сохранить PHP сценарий в кодировке Unicode



Редактировано 1 раз. Последний раз 06.05.2016 10:53 пользователем zagzag.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: amironov73 (IP-адрес скрыт)
Дата: 06, May, 2016 13:26

zagzag написал(а):
-------------------------------------------------------
> Важно сохранить PHP сценарий в кодировке Unicode

У меня предложение: опубликуйте свой исходник на GitHub. Тогда не придётся делать подобных уточнений. smiling smiley

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 06, May, 2016 13:48

Пожалуйста. Следите за обновлениями.
https://github.com/AleksandrDruzhinin/irbis64-php

Позже планирую добавить:
1. Функцию сохранения записи
2. Экспорт/Импорт бинарных ресурсов (фотографии читателей)
3. Вывод библиографического описания в виде HTML или RTF

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 10, May, 2016 14:55

А может кто-то к Вордпрессу прикрутит в виде плагина. С меня тогда МНОГО пива!

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 11, May, 2016 12:58

А какой функционал нужен? Типа электронного каталога?

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 11, May, 2016 16:36

Да, есть сайт на вордпресс, встроить поисковую строку с выпадающим меню как в Веб-Ирбисе.

Посмотрите пожалуйста мой дизайн - [e-catalog.mk.ua]

В идеале получить конструкцию/плагин способный интегрировать ЕК в сайт, но сохранить структуру ссылок веб-ирбиса (чтобы ЕК индексировался Гуглом).



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

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: IAK (IP-адрес скрыт)
Дата: 14, June, 2016 11:42

zagzag, спасибо и тебе, товарищ.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: BARGO (IP-адрес скрыт)
Дата: 21, July, 2016 11:16

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

Вы знаете какой именно файл форматирует результат поиска для вывода на страницу J-ИРБИСа? Есть у него html версия?

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 18, August, 2016 07:58

Добрый день, Александр.
Попробовал воспользоваться предложенным PHP-классом. Возникли проблемы. Нельзя ли живой пример с использованием одной функции ...

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 18, August, 2016 08:18

Здравствуйте. Могу подсказать. Какой пример нужен?

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 18, August, 2016 08:24

Подключиться к БД и получить максимальный MFN в базе ...

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 18, August, 2016 09:57

http://pastebin.com/cCywmndN

Обратите внимание на класс EK, в его констркторе инициализируется подключение к базе. Строки:
$this->irbis64->set_server('192.168.1.2', 6666); // адрес и порт сервера ирбис
$this->irbis64->set_user('1', '1'); // логин, пароль
$this->irbis64->set_arm('C'); // каталогизатор
$this->irbis64->set_db('IBIS'); // название базы
$this->irbis64->set_id('123123123'); // идентификатор



Редактировано 1 раз. Последний раз 18.08.2016 09:59 пользователем zagzag.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 18, August, 2016 10:53

Подскажите, пожалуйста, что такое идентификатор
$this->irbis64->set_id('123123123')

При попытке подстыковаться получил сообщение:
Connect... Online!

Данных об MFN - не получилось ...

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 18, August, 2016 13:04

Идентификатор - произвольное число, если под этим кодом уже будет активная сессия на сервере, то повторное подключение не удастся (поэтому в дестркторе класса прописан logout)

Вместо echo 'Online!'; впишите

echo 'Online!<br>';
echo $ek->irbis64->mfn_max() . '<br>';
var_dump($ek->irbis64);
echo '<br>Ошибка: ' . $ek->irbis64->error();

У меня выдает:
Connect... Online! 71040
object(irbis64)#2 (12) { 
["ip":"irbis64":private]=> string(11) "192.168.0.2" 
["port":"irbis64":private]=> int(6666) ["sock":"irbis64":private]=> resource(4) of type (Unknown) 
["login":"irbis64":private]=> string(1) "1" 
["pass":"irbis64":private]=> string(1) "1" 
["id":"irbis64":private]=> string(9) "123123123" 
["seq":"irbis64":private]=> int(3) 
["arm"]=> string(1) "C" 
["db"]=> string(4) "IBIS" 
["server_timeout"]=> string(2) "30" 
["server_ver"]=> string(7) "64.2014" 
["error_code"]=> int(0) 
}
Ошибка: Ошибки нет
То есть MFN = 71040



Редактировано 1 раз. Последний раз 18.08.2016 13:05 пользователем zagzag.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 18, August, 2016 13:25

Мне выдало:
Connect... Online!<br><br>
object(irbis64)#2 (12) {
["ip":"irbis64":private]=> string(12) "мой IP"
["port":"irbis64":private]=> int(6666)
["sock":"irbis64":private]=> resource(5) of type
(Unknown)
["login":"irbis64":private]=> string(10) "мой login"
["pass":"irbis64":private]=> string(3) "мой pass"
["id":"irbis64":private]=> string(9) "123123123"
["seq":"irbis64":private]=> int(3)
["arm"]=> string(1) "C"
["db"]=> string(4) "BOOK"
["server_timeout"]=> NULL
["server_ver"]=> NULL
["error_code"]=> NULL
}
<br>Ошибка: Неизвестная ошибка:

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 18, August, 2016 14:20

Странно... $this->error_code присваивается в irbis64->login()
у Вас оно NULL, значит ошибка где-то в этой функции.

Если в 63 строке заменить
$answer = $this->send($packet); 
на
$answer = $this->send($packet, true);


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

Connect...

>> 26\n A\n C\n A\n 123123123\n 1\n \n \n \n \n \n 1\n 1 

<< A\r\n 123123123\r\n 1\r\n 26465\r\n 64.2014\r\n \r\n \r\n \r\n \r\n \r\n 0\r\n 30\r\n [DISPLAY]...... дальше сервер присылает INI-файл 

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 18, August, 2016 14:38

получил строку:
Connect... >> 37\n A\n C\n A\n 123123123\n 1\n \n \n \n \n \n мой login\n мой pass << A 123123123 1 Online!

и все ...

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 18, August, 2016 14:43

Я изменил имя и пароль на несуществующие и получил тот же отклик ...

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 18, August, 2016 14:59

Какая у вас версия ирбис-сервера?



Редактировано 1 раз. Последний раз 18.08.2016 15:01 пользователем zagzag.

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: ivikis (IP-адрес скрыт)
Дата: 18, August, 2016 15:10

7.2

Re: Как подключиться к базе ИРБИС из PHP?
Пользователь: zagzag (IP-адрес скрыт)
Дата: 18, August, 2016 15:26

Наверное из-за этого. Слишком старая. Я пробовал на 2014
Почитайте документацию "Сервер 64.doc" в папке куда сервер установлен.
Раздел "7.3.1 Регистрация пользователя (A)" там должен быть описан формат запроса на авторизацию. Может достаточно будет убрать проверку на ошибку
        $this->error_code = $answer[10];
        if ($this->error_code != 0) return false;

или воспользуйтесь сниффером, чтобы "подслушать" что отправляет клиентский каталогизатор на сервер при авторизации. Например smsniff



Редактировано 1 раз. Последний раз 18.08.2016 15:28 пользователем zagzag.

Страницы: 123>>
Страница: 1 из 3


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