Имеется несколько функций. Одна функция которая выводит одну 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.
Заранее Спасибо.
переход к функции (cgi и c)
Модератор: Модераторы разделов
-
Nab
- Сообщения: 257
Re: переход к функции
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 запроса весьма неблагодарное дело...
-
niro
- Сообщения: 22
Re: переход к функции
2Nab
Собственно ваш вариант не работает.
P.S. Твориться что то вроде движка сайта.
Собственно ваш вариант не работает.
P.S. Твориться что то вроде движка сайта.
-
Nab
- Сообщения: 257
Re: переход к функции
Что значит не работает?
Если о том что кавычку закрыть забыл, так надеюсь, это не та проблема с которой вы столкнулись.
А так абсолютно верный код.
Вы лучше скажите как вы получаете и обрабатываете 'QUERY_STRING'.
PS: <a href="http://my_site.ru/cgi-bin/my_prog?func_name=funk2"> Funk2</a>
Может так будет более академично....
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: переход к функции
niro, рекомендую ознакомиться что такое CGI вообще и где оно находится...
-
niro
- Сообщения: 22
Re: переход к функции
Вот полный вид программы
#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();
}
Если что то забыл укажите, только пинать не надо, больно.
#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: переход к функции
По минимуму, забыл сделать разбор параметров.
Но к сожалению, я не знаю как в С-реализации CGI передаются праметры в прогу
но подозреваю что переменная окружения 'QUERY_STRING' указывает именно на нее.
Она будет иметь значение приблизительно такое "func_name=funk2" и тебе нужно проанализировать строку, и извлечь из нее имя функции...
Рыться в доках не буду сейчас, поэтому кто знает покажите ему плиз....
А лучше действительно вам почитать, что такое CGI и как с ним бороться
Но к сожалению, я не знаю как в С-реализации CGI передаются праметры в прогу
но подозреваю что переменная окружения 'QUERY_STRING' указывает именно на нее.
Она будет иметь значение приблизительно такое "func_name=funk2" и тебе нужно проанализировать строку, и извлечь из нее имя функции...
Рыться в доках не буду сейчас, поэтому кто знает покажите ему плиз....
А лучше действительно вам почитать, что такое CGI и как с ним бороться
-
AlexRat
- Сообщения: 88
Re: переход к функции
В вашем варианте вообще работать не будет. Хотя бы потому что нигде нет вызова функции funk2.
Вам уже писали выше, что в main нужно делать обработку переменной окружения QUERY_STRING, и в зависимости от того, что в ней содержится делать вызовы функций.
Приводить готовый текст бессмысленно, так как вам настоятельно необходимо изучить для начала механизм работы CGI в теории, а уже потом начинать писать программы. Иначе дело плохо кончится...
Про работу с переменными окружения см. например здесь: http://www.opennet.ru/docs/RUS/glibc/glibc-22.html#ss22.2
Вам уже писали выше, что в main нужно делать обработку переменной окружения QUERY_STRING, и в зависимости от того, что в ней содержится делать вызовы функций.
Приводить готовый текст бессмысленно, так как вам настоятельно необходимо изучить для начала механизм работы CGI в теории, а уже потом начинать писать программы. Иначе дело плохо кончится...
Про работу с переменными окружения см. например здесь: http://www.opennet.ru/docs/RUS/glibc/glibc-22.html#ss22.2
-
niro
- Сообщения: 22
Re: переход к функции
Пожалуйста объясните на реальном примере
-
AlexRat
- Сообщения: 88
Re: переход к функции
-
Nab
- Сообщения: 257
Re: переход к функции
Пример не совсем в тему, там описывается создание форм, и притом используется POST, а ему нужно закодировать вызов функции в URL, что реализуется как правило GET.
Хотя направление верное...
-
Schreibikus
- Сообщения: 18
Re: переход к функции
Отличная бибилиотека для написания cgi на c. Все прекрасно документировано, есть пример использования.
http://www.boutell.com/cgic/