Автор Тема: Как отправить данные?  (Прочитано 8028 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как отправить данные?
« : 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

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
Как отправить данные?
« Ответ #1 : 11 Марта 2004, 10:25:43 »
а что мешает делать поиск по базе? зачем эта программа тебе?
или ты не можешь напрямую коннектиться к базе данных?
Цитировать
DiJay:
база уникальная (кто-то сам разрабатывал), так что хрен знает как она работает

это любопытно.
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как отправить данные?
« Ответ #2 : 11 Марта 2004, 10:51:54 »
екзешники не принимают данные методом ПОСТ.
В ОС виндоус нету такого метода.
Разберись, пожалуйста, что там у тебя как работает, а потом будем думать, как решить твою задачу

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

И не должно быть.
ПОСТ тем от гета и отличается, что данные идут не в заголовках, а в теле запроса

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как отправить данные?
« Ответ #3 : 11 Марта 2004, 11:01:20 »
Вобщем тема такая:
есть форма поиска, которая отправляет данные на ехе-файл
ехе-файл обрабатывает запрос и возвращает результаты
в UTF-8 все работает
мне нужно сделать так:
форма (cp1251) направляет запрос на скрипт PHP, он перекодирует данные в UTF-8, затем направит все это на ехе-шник, ехе-шник возвращает результат в этот скрипт, он перекодирует обратно в cp1251 и отдаст клиенту

У этой проги своя какая-то база, так что коннектиться к базе нет никакой возможности!

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Как отправить данные?
« Ответ #4 : 11 Марта 2004, 11:59:50 »
DiJay С разработчиком программы пробовал связатся? Выяснить хотябы, что за база такая уникальная. Перекодировкой пока не заморачивайся это фигня, давай разберёмся как Программе передаются параметры, может командной строкой?
Мне тормоз послужил толчком...

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как отправить данные?
« Ответ #5 : 11 Марта 2004, 12:09:02 »
нет
прога работает только если послать на нее ПОСТ запрос
хрен знает кто разработчик :(
Пиплы, подскажите, пожалуйста, как мне передать переменные методом ПОСТ вручную? Сейчас смотрю PEAR, пробую через него, если что (не)получиться напишу!

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Как отправить данные?
« Ответ #6 : 11 Марта 2004, 12:56:17 »
DiJay Да нету метода ПОСТ в винде! Нету! Данные методом ПОСТ ты можешь послать ТОЛЬКО веб-серверу! Выложи где-нибудь документацию, попробуем разобраться.
Мне тормоз послужил толчком...

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Как отправить данные?
« Ответ #7 : 11 Марта 2004, 13:07:49 »
Neter, RomikChef, USE: вот как я это понял:
у него есть локальная сеть. В ней стоит сервер. К серверу можно обратиться с любого компа в сетке (для поиска в базе литературы).
http://localserver/search1.exe + POST-запрос
У них есть сайт. Win1251. И они хотят, чтобы можно было с сайта отправлять запросы этому search1.exe.

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

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

Да нет, похоже ему придется заморачиваться...
LJ: Backslashed life (rss)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Как отправить данные?
« Ответ #8 : 11 Марта 2004, 13:07:52 »
Neter
да он не в винде.
даже я уже понял :-)
там стоит некий локальный веб-сервер специально для этой проги, работающей в цги режиме.
то есть, это отдельный сайт, грубо говоря.
и парень к нему хочет обращаться скриптом.

DiJay
а ты напрямую можешь этот экзешник вызвать?
Хотя, наверное, проще будет действительно, сокетом.
поищи по слову curl и посмотри на http://detail.phpclub.net статью по отправке форм скриптом

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как отправить данные?
« Ответ #9 : 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

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Как отправить данные?
« Ответ #10 : 11 Марта 2004, 16:15:02 »
DiJay
Слушай, а ты не знаешь, где можно достать нормальную доку по IRBIS?
/Какие-то геморройщики ее писали, наверно./
LJ: Backslashed life (rss)

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Как отправить данные?
« Ответ #11 : 11 Марта 2004, 16:59:21 »
AS IS...

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Как отправить данные?
« Ответ #12 : 11 Марта 2004, 18:34:37 »
ThE0ReTiC
Да я же нормальную доку просил...
То есть для разработчика
LJ: Backslashed life (rss)

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Как отправить данные?
« Ответ #13 : 11 Марта 2004, 18:39:16 »
CGVictor
а - сорри недопонял
ИМХО стоит к разработчикам стукнуться в таком случае
AS IS...

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Как отправить данные?
« Ответ #14 : 11 Марта 2004, 19:00:30 »
ThE0ReTiC
Пробовал. Они молчат, как рыба об лед. На письма не отвечают, а больше...
LJ: Backslashed life (rss)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28