Как включить в работу скрипта CGI приложение.

zIP

Новичок
Как включить в работу скрипта CGI приложение.

Есть приложение. Оно генерирует html страницы запросов, выполняет запросы и выводит результат в виде html страницы.

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

Дайте, пожалуйста ссылку, что почитать.
 

zIP

Новичок
Можно пример алгоритма работы скрипта с использованием cURL?
 

Фанат

oncle terrible
Команда форума
Necromant
долго думал?
zIP
а чо - ссылку на это самое приложение сделать парторганизация не разрешает?

-~{}~ 10.10.06 14:30:

Necromant
если этот бедолага будет делать курлом, то ни ты, ни он на этом форуме можете больше не появляться.
идиотам тут не место.
 

Necromant

Новичок
Автор оригинала: Фанат
Necromant
если этот бедолага будет делать курлом, то ни ты, ни он на этом форуме можете больше не появляться.
идиотам тут не место.
Хм, может просто попробывать читать все что написано в топике до конца ???
Автор оригинала: zIP
Параметры передаются методом POST
могу замечательно выслушать , как передавать через запрос POST данные cgi скрипту в консоли.
 

Фанат

oncle terrible
Команда форума
слушать будешь на php.com.ua
а здесь ты будешь молча стоять в сторонке.
 

zIP

Новичок
Автор оригинала: Фанат
zIP
а чо - ссылку на это самое приложение сделать парторганизация не разрешает?
Это сайт библиотеки, где работаю и у нас нет программиста.
Ведется электронный каталог.
К программе по ведению электронного каталога есть модуль веб приложения для доступа к библиографическим описаниям. Он генерирует html формы для поисковых запросов.

Вот и хочется сделать все в едином стиле минимальными силами, не влазия в формирование поисковых запросов.
 

Фанат

oncle terrible
Команда форума
ну так какая проблема обращаться к этому модулю напрямую?
Ты слово CGI по делу употребил или от балды?
 

zIP

Новичок
Да, и еще.

В принципе я могу сделать дизайн для этого приложения отдельно от сайта собственно.

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

zIP

Новичок
Автор оригинала: Фанат
ну так какая проблема обращаться к этому модулю напрямую?
Ты слово CGI по делу употребил или от балды?
Просто я еще не сталкивался с такой проблемой, и соответственно не могу точно сформулировать вопрос.
От сюда непонимание.
Да и подсказать направление решения некому.

Да нет, не от балды. Так написано в руководстве к нему :).

1.Модуль обеспечения связи между Web- сервером и БД, созданного на основе CGI, (Common Gateway Interface – общий интерфейс шлюзов) что обеспечивает работу программного обеспечения с любыми серверами
 

Alexandre

PHPПенсионер
вот пример CGI пограммы принимающей POST
PHP:
main(int argc, char *argv[]) {
    entry entries[MAX_ENTRIES];
    register int x,m=0;
    int cl;

    printf("Content-type: text/html%c%c",10,10);

    if(strcmp(getenv("REQUEST_METHOD"),"POST")) {
        printf("This script should be referenced with a METHOD of POST.\n");
        printf("If you don't understand this, see this ");
        printf("<A HREF=\"http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/fill-out-forms/overview.html\">forms overview</A>.%c",10);
        exit(1);
    }
    if(strcmp(getenv("CONTENT_TYPE"),"application/x-www-form-urlencoded")) {
        printf("This script can only be used to decode form results. \n");
        exit(1);
    }
    cl = atoi(getenv("CONTENT_LENGTH"));

    for(x=0;cl && (!feof(stdin));x++) {
        m=x;
        entries[x].val = fmakeword(stdin,'&',&cl);
        plustospace(entries[x].val);
        unescape_url(entries[x].val);
        entries[x].name = makeword(entries[x].val,'=');
    }

    printf("<H1>Query Results</H1>");
    printf("You submitted the following name/value pairs:<p>%c",10);
    printf("<ul>%c",10);

    for(x=0; x <= m; x++)
        printf("<li> <code>%s = %s</code>%c",entries[x].name,
               entries[x].val,10);
    printf("</ul>%c",10);
}
соответственно, надо вызвать программу popen() и передать симулировать передачу ей POST параметров
Как видно из примера - CGI программа читает из stdin - стандартного потока ввода-вывода, следовательно работать с ней как с консольным приложением не представляет труда, надо только знать HTTP стандарты.

другими словами необходимо передать POST приблизительно такой запрос
Код:
POST /users/ HTTP/1.0
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 63

url=%2Fautificate%2F&ispost=1&login=asas&password=asas&x=31&y=8
POST строка кодируется base64
ее длинна соответственно должна равняиться значению строки Content-Length
 

zIP

Новичок
Так. А как получить от нее результат запроса?
Или я опять ничего не понял?
 

Alexandre

PHPПенсионер
А как получить от нее результат запроса?
см www.php.net/popen

fwrite - выводишь в CGI POST запрос
fread - читаешь ответ

-~{}~ 10.10.06 16:51:

и еще момент, как видно из примера
Content-Length - устанавливается через http://ru2.php.net/manual/en/function.putenv.php

более подробное описание CGI смотри по первой ссылки.

-~{}~ 10.10.06 16:53:

вот какие переменные должны быть как минимум установленны
getenv("REQUEST_METHOD"),"POST"))
getenv("CONTENT_TYPE"),"application/x-www-form-urlencoded"))
getenv("CONTENT_LENGTH"));
-~{}~ 10.10.06 16:55:

а вообще что хочется сделать - более красивое обрамление формы?

-~{}~ 10.10.06 17:00:

В принципе я могу сделать дизайн для этого приложения отдельно от сайта собственно
не благородное это дело...
может просто делать красивую форму и слать запрос напрямую в CGI программу?
а вывод уже будет делать сама CGI
 

zIP

Новичок
Автор оригинала: Alexandre
-~{}~ 10.10.06 16:55:

а вообще что хочется сделать - более красивое обрамление формы?

-~{}~ 10.10.06 17:00:


не благородное это дело...
может просто делать красивую форму и слать запрос напрямую в CGI программу?
а вывод уже будет делать сама CGI
Да. Сделать более презентабельный вид. Это же не менее важно чем функциональность.

Форму сделать не проще. Форм много и они генерируются программой в зависимости от используемой базы данныхи других условий. Есть много нюансов.
В принципе все это можно сделать, но повторюсь - это требует серьезной разработки, а с моим опытом это может затянуться на пару месяцев.

-~{}~ 10.10.06 18:57:

Но в итоге к этому придеться прийти, как бы мне не хотелось.

Да, и еще. Может я не правильно ставлю задачу?

Вот url по которому доступна одна из поисковых форм.

http://192.168.0.3/cgi-bin/cgiir_32.exe?C21COM=F&I21DBN=IBIS&P21DBN=IBIS&Z21ID=

Собственно фомы вызываються методом GET.

Другими для открытия этой формы(и всех остальных) мужно перейти по ссылке такого вида.
Параметры указывают только на то, какая нужна форма.

А вот собственно поисковый запрос передаеться уже методом POST.
 
Сверху