Функции для работы с CGI-параметрами

HTML-форма, которая будет рассматриваться во всех примерах ниже




void GetQueryString(CString* qs);
Параметры:
Указатель на объект типа CString, в котором будет сохранена копия строки cgi-запроса.
Описание
Возвращает копию строки CGI-запроса.
Пример:
На входе имеем следующую строку cgi-запроса:
text=test&password=qw12&checkbox=on&radio=r2&textarea=
wew&list=2&list2=11&list2=1&list2=2&list2=0
Код программы:
#include <itcgi.h>

int main()
{
CString* cgi_query = CreateString();

GetQueryString(cgi_query);
printf("Content-type: text/plain\n\n);
printf("Получена следующая строка cgi-запроса %s\n", *cgi_query);

DeleteString(cgi_query);
}
На выходе:
Получена следующая строка cgi-запроса 
text=test&password=qw12&checkbox=on&radio=r2&textarea=
wew&list=2&list2=11&list2=1&list2=2&list2=0



int GetCount();
Возвращаемое значение
Общее число параметров переданных посредством CGI.
Пример:
На входе имеем следующую строку cgi-запроса:
text=test&password=qw12&checkbox=on&radio=r2&textarea=
wew&list=2&list2=11&list2=1&list2=2&list2=0
Код программы:
#include <itcgi.h>

int main()
{


printf("Content-type: text/plain\n\n);
printf("Общее количество cgi-параметров равно %d.\n", GetCount());


}
На выходе:
Общее количество cgi-параметров равно 10.



int GetParamByName(const char* name, CString* value);
Возвращаемое значение:
1 - если всё прошло хорошо, 0 - если запрошенного параметра нет или произошла ошибка иного рода.
Параметры:
name - задаёт имя параметра, значение которого необходимо вернуть

value - строка, в которую следует положить значение.
Описание
Возвращает значение параметра по его имени. Обратите внимание, что в рассматриваемом примере используется список, в котором можно выбрать несколько значений. У нас четыре пары параметр=значение с именем параметра list2. Данная фукнция вернет значение первого параметра с именем list2. Для доступа к остальным значениям параметра list2 см. функции
GetParamByIndex и GetParamNameByIndex.
Пример:
На входе имеем следующую строку cgi-запроса:
text=test&password=qw12&checkbox=on&radio=r2&textarea=
wew&list=2&list2=11&list2=1&list2=2&list2=0
Код программы:
#include <itcgi.h>

int main()
{
CString* pwd = CreateString();

GetParamByName("password", pwd);
printf("Content-type: text/plain\n\n);
printf("Вы ввели пароль: %s.\n", *pwd);

DeleteString(pwd);
}
На выходе:
Вы ввели пароль: qw12.



int GetParamByIndex(int index, CString* value);
int GetParamNameByIndex(int index, CString* name);
Возвращаемое значение:
1 - если всё прошло хорошо, 0 - если запрошенного параметра нет или произошла ошибка иного рода.
Параметры:
index - задаёт номер параметра, значение которого необходимо вернуть (отсчёт ведётся от нуля).

value - строка, в которую следует положить значение.
name - строка, в которой следует сохранить имя параметра.

Описание
Возвращает значение параметра по его порядковому номеру.
Пример:
На входе имеем следующую строку cgi-запроса:
text=test&password=qw12&checkbox=on&radio=r2&textarea=
wew&list=2&list2=11&list2=1&list2=2&list2=0
Код программы:
#include <itcgi.h>

int main()
{
CString* name = CreateString();
CString* value = CreateString();
int i, count;

count = GetCount();
printf("Content-type: text/html\n\n);

printf("<html><table><caption>Полный список\
 cgi-параметров</caption><tr><td\
 bgolor="E5E5E5">Индекс<td bgolor="E5E5E5">Имя<td\
 bgolor="E5E5E5">Значение");
for(i=0;i<count;i++)
{
 GetParamByIndex(i, value);
 GetParamNameByIndex(i, name);
 printf("<tr><td>%d <td> %s <td> %s\n", i, *name, *value);
}
DeleteString(name);
DeleteString(value);
}
На выходе:
Полный список cgi-параметров
ИндексИмя Значение
0 text test
1 password qw12
2 checkbox on



int IsParam(const char *name);
Возвращаемое значение
Проверяет есть ли параметр с именем name. Если такой параметр есть то возвращает 1, иначе 0.
Пример:
На входе имеем следующую строку cgi-запроса:
text=test&password=qw12&checkbox=on&radio=r2&textarea=
wew&list=2&list2=11&list2=1&list2=2&list2=0
Код программы:
#include <itcgi.h>

int main()
{


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

if(IsParam("name"))
 printf("В cgi-запросе присутствует параметр с именем name.\n");
else 
 printf("В cgi-запросе нет параметра с именем name.\n");

}
На выходе:
В cgi-запросе нет параметра с именем name.



int GetFullSQLQuery(CString *sql_query, int n);
Возвращаемое значение: 1 в случае успешного выполнения функции.
Параметры:
sql_query - шаблон SQL-запроса, например INSERT INTO my_table (my_text, pwd) VALUES('%s', '%s')
n - с какого параметра CGI-запроса начинать вставлять значения
Описание
Формирует SQL-запрос к базе данных.
Пример:
На входе имеем следующую строку cgi-запроса:
text=test&password=qw12&checkbox=on&radio=r2&textarea=
wew&list=2&list2=11&list2=1&list2=2&list2=0
Код программы:
#include <itcgi.h>

int main()
{
CString* sql_query = CreateString();

CString_SetString(sql_query, "INSERT INTO my_table (my_text, pwd) VALUES('%s', '%s')");
int GetFullSQLQuery(sql_query, 0);

printf("Content-type: text/plain\n\n);
printf("Сформирован следующий SQL-запрос %s.\n", *sql_query);

DeleteString(sql_query);
}
На выходе:
Сформирован следующий SQL-запрос 
INSERT INTO my_table (my_text, pwd) VALUES('test', 'qw12').
[an error occurred while processing this directive]