|
сте со значением счетчика посещений в
многострочном окне редактирования.
Исходный документ HTML представлен в листинге 7.7.
Листинг 7.7. Файл chapter7/AgainCGI/AgainCGI.html
Cookies demo
Visit our page!
В этом документе определены две формы.
Первая форма предназначена для вызова программы CGI с параметром go, а
вторая - с параметром clear.
Исходный текст программы CGI, использованной в нашем примере, вы найдете в
листинге 7.8.
Листинг 7.8. Файл chapter7/AgainCGI/Again.c
// ===============================================
// Расширение CGI, предназначенное для
// работы с cookie
//
// (C) Фролов А.В., 1998
// E-mail: [email protected]
// WWW: http://www.glasnet.ru/~frolov
// или
// http://www.dials.ccas.ru/frolov
// ===============================================
#include
#include
#include
#include
// Прототипы функций, определенных в нашей программе
char *findCookie(char * szName);
void insertHTML(char * pszFileName, char * pszBuf);
void main(int argc, char *argv[])
{
char * pszQueryString;
char * pszCookie;
char * pszMyCookie;
int nCount;
char szBuf[4096];
char szBuf1[20];
// Заголовок для добавления cookie
char szCookieHeader[] =
"Set-Cookie: AgainCount=0;\r\nContent-type: text/html\r\n\r\n";
// Заголовок для удаления cookie
char szCookieRemoveHeader[] =
"Set-Cookie: AgainCount=0;expires=Mon 03-May-1993 12:00:00 GMT;"
"\r\nContent-type: text/html;\r\n\r\n";
// Получаем параметр запуска CGI
pszQueryString = getenv("QUERY_STRING");
// Получаем строку Cookie из заголовка HTTP
pszCookie = getenv("HTTP_COOKIE");
// Посещение страницы
if(!strcmp(pszQueryString, "go"))
{
// Если cookie не обнаружен, создаем его
if(pszCookie == NULL)
{
// Выво
|
|