Forum Webscript.Ru

Программирование => PHP => Тема начата: DiJay от 11 Марта 2004, 06:51:25

Название: Как отправить данные?
Отправлено: 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? Как вообще передаются данные методом пост? Смотрел я заголовки, которые отправляет клиент при сабмите формы, только данных там че-та нету. Подскажите, пожалуйста!
Название: Как отправить данные?
Отправлено: USE от 11 Марта 2004, 10:25:43
а что мешает делать поиск по базе? зачем эта программа тебе?
или ты не можешь напрямую коннектиться к базе данных?
Цитировать
DiJay:
база уникальная (кто-то сам разрабатывал), так что хрен знает как она работает

это любопытно.
Название: Как отправить данные?
Отправлено: Меняздесьдавнонет от 11 Марта 2004, 10:51:54
екзешники не принимают данные методом ПОСТ.
В ОС виндоус нету такого метода.
Разберись, пожалуйста, что там у тебя как работает, а потом будем думать, как решить твою задачу

Цитировать
Смотрел я заголовки, которые отправляет клиент при сабмите формы, только данных там че-та нету.

И не должно быть.
ПОСТ тем от гета и отличается, что данные идут не в заголовках, а в теле запроса
Название: Как отправить данные?
Отправлено: DiJay от 11 Марта 2004, 11:01:20
Вобщем тема такая:
есть форма поиска, которая отправляет данные на ехе-файл
ехе-файл обрабатывает запрос и возвращает результаты
в UTF-8 все работает
мне нужно сделать так:
форма (cp1251) направляет запрос на скрипт PHP, он перекодирует данные в UTF-8, затем направит все это на ехе-шник, ехе-шник возвращает результат в этот скрипт, он перекодирует обратно в cp1251 и отдаст клиенту

У этой проги своя какая-то база, так что коннектиться к базе нет никакой возможности!
Название: Как отправить данные?
Отправлено: Neter от 11 Марта 2004, 11:59:50
DiJay С разработчиком программы пробовал связатся? Выяснить хотябы, что за база такая уникальная. Перекодировкой пока не заморачивайся это фигня, давай разберёмся как Программе передаются параметры, может командной строкой?
Название: Как отправить данные?
Отправлено: DiJay от 11 Марта 2004, 12:09:02
нет
прога работает только если послать на нее ПОСТ запрос
хрен знает кто разработчик :(
Пиплы, подскажите, пожалуйста, как мне передать переменные методом ПОСТ вручную? Сейчас смотрю PEAR, пробую через него, если что (не)получиться напишу!
Название: Как отправить данные?
Отправлено: Neter от 11 Марта 2004, 12:56:17
DiJay Да нету метода ПОСТ в винде! Нету! Данные методом ПОСТ ты можешь послать ТОЛЬКО веб-серверу! Выложи где-нибудь документацию, попробуем разобраться.
Название: Как отправить данные?
Отправлено: CGVictor от 11 Марта 2004, 13:07:49
Neter, RomikChef, USE: вот как я это понял:
у него есть локальная сеть. В ней стоит сервер. К серверу можно обратиться с любого компа в сетке (для поиска в базе литературы).
http://localserver/search1.exe + POST-запрос
У них есть сайт. Win1251. И они хотят, чтобы можно было с сайта отправлять запросы этому search1.exe.

У нас такое было, система WebIRBIS_2K (и 3K тоже). Тот же гемморой. Но у нее выставлялась кодировка в конфигах.

DiJay
Опиши подробнее, документацию... Название, хотя бы.
Цитировать
Neter:
пока не заморачивайся это фигня

Да нет, похоже ему придется заморачиваться...
Название: Как отправить данные?
Отправлено: Меняздесьдавнонет от 11 Марта 2004, 13:07:52
Neter
да он не в винде.
даже я уже понял :-)
там стоит некий локальный веб-сервер специально для этой проги, работающей в цги режиме.
то есть, это отдельный сайт, грубо говоря.
и парень к нему хочет обращаться скриптом.

DiJay
а ты напрямую можешь этот экзешник вызвать?
Хотя, наверное, проще будет действительно, сокетом.
поищи по слову curl и посмотри на http://detail.phpclub.net статью по отправке форм скриптом
Название: Как отправить данные?
Отправлено: DiJay от 11 Марта 2004, 13:28:41
мужики, короче я решил эту проблему :)
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
Только, блин, система эта косячная, далее возникают проблемы с постраничным выводом результатов из-за этой вонючей кодировки!
Значит тема пока не закрыта. По мере проблем буду обращаться к вам. Спасибо за то что уделяете внимание!
Название: Как отправить данные?
Отправлено: CGVictor от 11 Марта 2004, 16:15:02
DiJay
Слушай, а ты не знаешь, где можно достать нормальную доку по IRBIS?
/Какие-то геморройщики ее писали, наверно./
Название: Как отправить данные?
Отправлено: ThE0ReTiC от 11 Марта 2004, 16:59:21
CGVictor
http://compaq.viniti.ru/irbis.htm
Название: Как отправить данные?
Отправлено: CGVictor от 11 Марта 2004, 18:34:37
ThE0ReTiC
Да я же нормальную доку просил...
То есть для разработчика
Название: Как отправить данные?
Отправлено: ThE0ReTiC от 11 Марта 2004, 18:39:16
CGVictor
а - сорри недопонял
ИМХО стоит к разработчикам стукнуться в таком случае
Название: Как отправить данные?
Отправлено: CGVictor от 11 Марта 2004, 19:00:30
ThE0ReTiC
Пробовал. Они молчат, как рыба об лед. На письма не отвечают, а больше...
Название: Как отправить данные?
Отправлено: DiJay от 12 Марта 2004, 06:07:16
уууу
я не в курсе этой проги
веб-интерфейс вообще в слепую писал
знаю что принимает она такие-то параметры и выдает что-то, и все

ну а то что гемморой, это да :)