переход к функции (cgi и c)

Модератор: Модераторы разделов

niro
Сообщения: 22

переход к функции

Сообщение niro »

Имеется несколько функций. Одна функция которая выводит одну html страницу, другая другую.

funk()
{
start_html(); //функция вывода начала html кода
printf("<center><h1>funk1</h1></center>\n");
printf("<a href=???>Funk2</a>\n");
stop_html(); //функция вывода конца html кода
}
funk2()
{
start_html();
printf("<center><h1>funk2</h1></center>\n");
stop_html();
}

Как задать <a href > чтобы перейти к другой функции.
Может кто знает где можно достать доку по cgi на c.
Заранее Спасибо.
Спасибо сказали:
Nab
Сообщения: 257

Re: переход к функции

Сообщение Nab »

niro писал(а):
02.10.2005 17:15
Имеется несколько функций. Одна функция которая выводит одну html страницу, другая другую.

funk()
{
start_html(); //функция вывода начала html кода
printf("<center><h1>funk1</h1></center>\n");
printf("<a href=???>Funk2</a>\n");
stop_html(); //функция вывода конца html кода
}
funk2()
{
start_html();
printf("<center><h1>funk2</h1></center>\n");
stop_html();
}

Как задать <a href > чтобы перейти к другой функции.
Может кто знает где можно достать доку по cgi на c.
Заранее Спасибо.


<a href="http://my_site.ru/cgi-bin/my_prog?funk2> Funk2</a>

А разбор входящих параметров делать в main и вызывать соответствующую.

Это в кратце.
А теперь вопрос на засыпку: для чего вы пишете?

Ибо мое мнение, что написание CGI на С возможно только в очень сложных случаях, к примеру SWAT.
Но там реализован полностью HTTP сервер. Возможно какой нибудь WebAdmin или движок сайта.
Да и то накладные расходы по производительности будут достаточно высоки.
Лучше использовать что-то скриптовое Perl, PHP, Python, Shell. Вместе с mod_perl получиться намного быстрее.
Для других целей, я подозреваю существуют библиотеки на С, которые производят разбор параметров, и помогают формировать HTML. Потому как разбирать вручную параметры HTTP запроса весьма неблагодарное дело...
Чтобы правильно задать вопрос, нужно знать больше половины ответа...
FREESCO in Ukraine
Спасибо сказали:
niro
Сообщения: 22

Re: переход к функции

Сообщение niro »

2Nab
Собственно ваш вариант не работает.
P.S. Твориться что то вроде движка сайта.
Спасибо сказали:
Nab
Сообщения: 257

Re: переход к функции

Сообщение Nab »

niro писал(а):
02.10.2005 20:24
2Nab
Собственно ваш вариант не работает.
P.S. Твориться что то вроде движка сайта.

Что значит не работает?

Если о том что кавычку закрыть забыл, так надеюсь, это не та проблема с которой вы столкнулись.
А так абсолютно верный код.
Вы лучше скажите как вы получаете и обрабатываете 'QUERY_STRING'.

PS: <a href="http://my_site.ru/cgi-bin/my_prog?func_name=funk2"> Funk2</a>
Может так будет более академично....
Чтобы правильно задать вопрос, нужно знать больше половины ответа...
FREESCO in Ukraine
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: переход к функции

Сообщение KiWi »

niro, рекомендую ознакомиться что такое CGI вообще и где оно находится...
Спасибо сказали:
niro
Сообщения: 22

Re: переход к функции

Сообщение niro »

Вот полный вид программы
#include <stdio.h>
#include "html.h"
main()
{
start_html(); //функция вывода начала html кода
printf("<center><h1>funk1</h1></center>\n");
printf("<a href=???>Funk2</a>\n");
stop_html(); //функция вывода конца html кода
}
funk2()
{
start_html();
printf("<center><h1>2funk</h1></center>\n");
stop_html();
}

Если что то забыл укажите, только пинать не надо, больно.
Спасибо сказали:
Nab
Сообщения: 257

Re: переход к функции

Сообщение Nab »

По минимуму, забыл сделать разбор параметров.

Но к сожалению, я не знаю как в С-реализации CGI передаются праметры в прогу
но подозреваю что переменная окружения 'QUERY_STRING' указывает именно на нее.
Она будет иметь значение приблизительно такое "func_name=funk2" и тебе нужно проанализировать строку, и извлечь из нее имя функции...

Рыться в доках не буду сейчас, поэтому кто знает покажите ему плиз....

А лучше действительно вам почитать, что такое CGI и как с ним бороться :)
Чтобы правильно задать вопрос, нужно знать больше половины ответа...
FREESCO in Ukraine
Спасибо сказали:
Аватара пользователя
AlexRat
Сообщения: 88

Re: переход к функции

Сообщение AlexRat »

В вашем варианте вообще работать не будет. Хотя бы потому что нигде нет вызова функции funk2.
Вам уже писали выше, что в main нужно делать обработку переменной окружения QUERY_STRING, и в зависимости от того, что в ней содержится делать вызовы функций.
Приводить готовый текст бессмысленно, так как вам настоятельно необходимо изучить для начала механизм работы CGI в теории, а уже потом начинать писать программы. Иначе дело плохо кончится...

Про работу с переменными окружения см. например здесь: http://www.opennet.ru/docs/RUS/glibc/glibc-22.html#ss22.2
Мой блог
Ubuntu 7.04
Windows XP SP2
Спасибо сказали:
niro
Сообщения: 22

Re: переход к функции

Сообщение niro »

Пожалуйста объясните на реальном примере
Спасибо сказали:
Аватара пользователя
AlexRat
Сообщения: 88

Re: переход к функции

Сообщение AlexRat »

niro писал(а):
03.10.2005 17:07
Пожалуйста объясните на реальном примере

Вот здесь есть примеры: http://webreference.com/htmlform/
Мой блог
Ubuntu 7.04
Windows XP SP2
Спасибо сказали:
Nab
Сообщения: 257

Re: переход к функции

Сообщение Nab »

AlexRat писал(а):
03.10.2005 17:14
niro писал(а):
03.10.2005 17:07

Пожалуйста объясните на реальном примере

Вот здесь есть примеры: http://webreference.com/htmlform/


Пример не совсем в тему, там описывается создание форм, и притом используется POST, а ему нужно закодировать вызов функции в URL, что реализуется как правило GET.
Хотя направление верное... :)
Чтобы правильно задать вопрос, нужно знать больше половины ответа...
FREESCO in Ukraine
Спасибо сказали:
Schreibikus
Сообщения: 18

Re: переход к функции

Сообщение Schreibikus »

niro писал(а):
02.10.2005 17:15
Может кто знает где можно достать доку по cgi на c.
Заранее Спасибо.


Отличная бибилиотека для написания cgi на c. Все прекрасно документировано, есть пример использования.
http://www.boutell.com/cgic/
Спасибо сказали: