LINUX.ORG.RU

Передача параметров в CGI, как?

 , ,


0

1

Как передать параметры бинарнику cgi

Вот имеем код на сишке

#include <stdio.h>
#include <cgic.h>
#include <string.h>
#include <stdlib.h>
#include "gms.h"
#include "gen_index.h"


int cgiMain() 
{


GMS_block_head();
GMS_block_body_open();
GMS_block_logo();
GMS_block_menu();
GMS_block_content_open();
GMS_block_content_post();
GMS_block_content_clouse();
GMS_block_welcom();
GMS_block_news();
GMS_block_about();
GMS_block_body_clouse();


return 0;
}

Всё по полочкам, странички генерируются всё прекрастно, но вот не могу я понять как реализовать приём параметров?

На клиенте то понятно http://tratata.org/cgi-bin/index.cgi?hello

Ну вот передали мы hello в cgi, как собственно его принять то?

Грешным делом подумал что как обычно через argc,argv ан нет :(

★★★★★

Последнее исправление: Dron (всего исправлений: 2)

getenv(«QUERY_STRING»); для GET и stdin для POST. Во фреймворках есть и уже готовое. Смотри cgic. А вообще это разжованно во всех туториалах.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)

Это проблема понимания cgi-интерфейса. Я себе свою либу для этих целей лабаю/пополняю. Довольно забавные вещи получаются при обработке переменной окружения PATH_INFO - можно генерировать динамически то, что будет выглядеть одним файлом. Таким обычно балуются во всяких phpbb.

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

nickleiten ★★★
()
Ответ на: комментарий от nickleiten
#include <stdio.h>

int
main(int argc, char **argv, char **envp)
{
        int c;

        printf("Content-Type: text/plain\n\n");

        printf("argc: %d\n", argc);

        while (*argv)
                printf("argv: %s\n", *argv++);

        while (*envp)
                printf("envp: %s\n", *envp++);

        while ((c = getchar()) != EOF)
                putchar(c);

        return 0;
}
beastie ★★★★★
()
Ответ на: комментарий от Dron

По поводу разбора QUERY_STRING я бы взял, что-то готовое — там есть подводные грабли. Например cgiFormString() из cgic, который ты видимо (#include) уже используешь.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от Dron

Ну я для примера, откуда взять все переменные окружения, которые твой веб-сервер устанавливает. Тут не всегда угадаешь, только смотреть самому.

nickleiten ★★★
()
Ответ на: комментарий от beastie

cgic

Сначала да, сейчас выбросил. Ну его на, я люблю велосипеды :)

Dron ★★★★★
() автор топика
Ответ на: комментарий от beastie

+много

что бы чел понимал как cgi по факту ..

а уж затем обвязка с библиотечными getenv(«QUERY_STRING»)

qulinxao ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.