Forum Webscript.Ru
Программирование => PHP => Тема начата: DiJay от 11 Марта 2004, 06:51:25
-
есть база данных литературы
с этой базой работает exe-шник, а именно осуществляет поиск и выдает результаты
есть потребность у начальства написать веб-интерфейс к этой всей хрени и встроить его в корпоративный сайт
Проблемы:
exe-шник писал не я, база уникальная (кто-то сам разрабатывал), так что хрен знает как она работает, да и времени нет разбираться. Эта хренова база работает в кодировке UTF-8. Весь сайт на cp-1251 и смысла из-за одного поиска переделывать весь сайт в UTF-8 я не вижу. Exe-шник работает только с POST запросами форм поиска.
Подскажите, мудрые люди, как мне этому вонючему exe-шнику отправить данные в кодировке UTF-8.
С перекодировкой cp-1251 в UTF-8 и обратно я разобрался. Вижу решение проблемы в отправке HTTP-заголовков вручную через сокеты. Но как послать данные в НТТР-заголовке методом POST? Как вообще передаются данные методом пост? Смотрел я заголовки, которые отправляет клиент при сабмите формы, только данных там че-та нету. Подскажите, пожалуйста!
-
а что мешает делать поиск по базе? зачем эта программа тебе?
или ты не можешь напрямую коннектиться к базе данных?
DiJay:
база уникальная (кто-то сам разрабатывал), так что хрен знает как она работает
это любопытно.
-
екзешники не принимают данные методом ПОСТ.
В ОС виндоус нету такого метода.
Разберись, пожалуйста, что там у тебя как работает, а потом будем думать, как решить твою задачу
Смотрел я заголовки, которые отправляет клиент при сабмите формы, только данных там че-та нету.
И не должно быть.
ПОСТ тем от гета и отличается, что данные идут не в заголовках, а в теле запроса
-
Вобщем тема такая:
есть форма поиска, которая отправляет данные на ехе-файл
ехе-файл обрабатывает запрос и возвращает результаты
в UTF-8 все работает
мне нужно сделать так:
форма (cp1251) направляет запрос на скрипт PHP, он перекодирует данные в UTF-8, затем направит все это на ехе-шник, ехе-шник возвращает результат в этот скрипт, он перекодирует обратно в cp1251 и отдаст клиенту
У этой проги своя какая-то база, так что коннектиться к базе нет никакой возможности!
-
DiJay С разработчиком программы пробовал связатся? Выяснить хотябы, что за база такая уникальная. Перекодировкой пока не заморачивайся это фигня, давай разберёмся как Программе передаются параметры, может командной строкой?
-
нет
прога работает только если послать на нее ПОСТ запрос
хрен знает кто разработчик :(
Пиплы, подскажите, пожалуйста, как мне передать переменные методом ПОСТ вручную? Сейчас смотрю PEAR, пробую через него, если что (не)получиться напишу!
-
DiJay Да нету метода ПОСТ в винде! Нету! Данные методом ПОСТ ты можешь послать ТОЛЬКО веб-серверу! Выложи где-нибудь документацию, попробуем разобраться.
-
Neter, RomikChef, USE: вот как я это понял:
у него есть локальная сеть. В ней стоит сервер. К серверу можно обратиться с любого компа в сетке (для поиска в базе литературы).
http://localserver/search1.exe + POST-запрос
У них есть сайт. Win1251. И они хотят, чтобы можно было с сайта отправлять запросы этому search1.exe.
У нас такое было, система WebIRBIS_2K (и 3K тоже). Тот же гемморой. Но у нее выставлялась кодировка в конфигах.
DiJay
Опиши подробнее, документацию... Название, хотя бы.
Neter:
пока не заморачивайся это фигня
Да нет, похоже ему придется заморачиваться...
-
Neter
да он не в винде.
даже я уже понял :-)
там стоит некий локальный веб-сервер специально для этой проги, работающей в цги режиме.
то есть, это отдельный сайт, грубо говоря.
и парень к нему хочет обращаться скриптом.
DiJay
а ты напрямую можешь этот экзешник вызвать?
Хотя, наверное, проще будет действительно, сокетом.
поищи по слову curl и посмотри на http://detail.phpclub.net статью по отправке форм скриптом
-
мужики, короче я решил эту проблему :)
CGVictor был прав, точно система Irbis называется
Решение, конкретно для IRBIS (без возможности заказа):
1) скачиваем PEAR классы: HTTP_Request.php, Net_URL.php, Net_Socket.php. Устанавливаем, подключаем к своему скрипту
2) В свой скрипт вставляем код:
$req = &new HTTP_Request(\'http://адрес_вашего_сайта/cgi-bin/irbis64r/cgiirbis_64.exe\');
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addPostData(\'S21FTR\', win2utf($_POST["S21FTR"]));
$req->addPostData(\'I21DBN\', win2utf($_POST["I21DBN"]));
$req->addPostData(\'S21STN\', win2utf($_POST["S21STN"]));
$req->addPostData(\'S21CNR\', win2utf($_POST["S21CNR"]));
$req->addPostData(\'S21SRW\', win2utf($_POST["S21SRW"]));
$req->addPostData(\'S21FMT\', win2utf($_POST["S21FMT"]));
$req->addPostData(\'3_S21P01\', win2utf($_POST["3_S21P01"]));
$req->addPostData(\'3_S21P02\', win2utf($_POST["3_S21P02"]));
$req->addPostData(\'3_S21P03\', win2utf($_POST["3_S21P03"]));
$req->addPostData(\'3_S21P05\', win2utf($_POST["3_S21P05"]));
$req->addPostData(\'3_S21STR\', win2utf($_POST["3_S21STR"]));
$req->addPostData(\'007S21P02\', win2utf($_POST["007S21P02"]));
$req->addPostData(\'007S21P03\', win2utf($_POST["007S21P03"]));
$req->addPostData(\'007S21P05\', win2utf($_POST["007S21P05"]));
$req->addPostData(\'0007S21P06\', win2utf($_POST["0007S21P06"]));
$req->addPostData(\'007S21STR\', win2utf($_POST["007S21STR"]));
$req->addPostData(\'2_S21P02\', win2utf($_POST["2_S21P02"]));
$req->addPostData(\'2_S21P03\', win2utf($_POST["2_S21P03"]));
$req->addPostData(\'2_S21P05\', win2utf($_POST["2_S21P05"]));
$req->addPostData(\'2_S21STR\', win2utf($_POST["2_S21STR"]));
$req->addPostData(\'2_S21LOG\', win2utf($_POST["2_S21LOG"]));
$req->addPostData(\'2_S21P01\', win2utf($_POST["2_S21P01"]));
$req->addPostData(\'34_S21P01\', win2utf($_POST["34_S21P01"]));
$req->addPostData(\'34_S21P03\', win2utf($_POST["34_S21P03"]));
$req->addPostData(\'34_S21P05\', win2utf($_POST["34_S21P05"]));
$req->addPostData(\'34_S21STR\', win2utf($_POST["34_S21STR"]));
$req->addPostData(\'4_S21P01\', win2utf($_POST["4_S21P01"]));
$req->addPostData(\'4_S21P03\', win2utf($_POST["4_S21P03"]));
$req->addPostData(\'4_S21P05\', win2utf($_POST["4_S21P05"]));
$req->addPostData(\'4_S21STR\', win2utf($_POST["4_S21STR"]));
$req->addPostData(\'5_S21P03\', win2utf($_POST["5_S21P03"]));
$req->addPostData(\'5_S21P05\', win2utf($_POST["5_S21P05"]));
$req->addPostData(\'5_S21STR\', win2utf($_POST["5_S21STR"]));
$req->addPostData(\'C21COM\', win2utf($_POST["C21COM"]));
$req->sendRequest();
echo utf2win($req->getResponseBody());
где функции win2utf() и utf2win() вы можете найти на http://php.net
Только, блин, система эта косячная, далее возникают проблемы с постраничным выводом результатов из-за этой вонючей кодировки!
Значит тема пока не закрыта. По мере проблем буду обращаться к вам. Спасибо за то что уделяете внимание!
-
DiJay
Слушай, а ты не знаешь, где можно достать нормальную доку по IRBIS?
/Какие-то геморройщики ее писали, наверно./
-
CGVictor
http://compaq.viniti.ru/irbis.htm
-
ThE0ReTiC
Да я же нормальную доку просил...
То есть для разработчика
-
CGVictor
а - сорри недопонял
ИМХО стоит к разработчикам стукнуться в таком случае
-
ThE0ReTiC
Пробовал. Они молчат, как рыба об лед. На письма не отвечают, а больше...
-
уууу
я не в курсе этой проги
веб-интерфейс вообще в слепую писал
знаю что принимает она такие-то параметры и выдает что-то, и все
ну а то что гемморой, это да :)