Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Сценарии JavaScript в активных страницах Web
<<-[Весь Текст]
Страница: из 116
 <<-
 
щаем значение параметра
      return pszBegin;
    }
  }
}

// -----------------------------------------------
// insertHTML
// Вставка в буфер содержимого текстового файла
// -----------------------------------------------
void insertHTML(char * pszFileName, char * pszBuf)
{
  HFILE hSrcFile;
  DWORD dwFileSize;

  // Открываем файл
  hSrcFile = _lopen(pszFileName, OF_READ);

  // Определяем его длину
  dwFileSize = _llseek(hSrcFile, 0, 2);
  
  // Устанавливаем указатель на начало файла
  _llseek(hSrcFile, 0, 0);

  // Читаем файл в буфер
  _hread(hSrcFile, pszBuf, dwFileSize);

  // Закрываем буфер двоичным нулем
  pszBuf[dwFileSize] = '\0';

  // Закрываем файл
  _lclose(hSrcFile);
}
   В переменной szCookieHeader мы подготовили заголовок Set-Cookie, 
предназначенный для создания параметра cookie с именем AgainCount:
char szCookieHeader[] = 
 "Set-Cookie: AgainCount=0;\r\nContent-type: text/html\r\n\r\n";
   Начальное значение этого параметра равно нулю.
   Заголовок, хранящийся в переменной szCookieRemoveHeader, предназначен для 
удаления 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";
   Эффект удаления достигается благодаря тому, что в параметре expires мы 
указали уже наступившую дату.
   Сразу после запуска программа CGI получает значение переменных среды 
QUERY_STRING и HTTP_COOKIE:
pszQueryString = getenv("QUERY_STRING");
pszCookie = getenv("HTTP_COOKIE");
   В первой из них хранится параметр запуска программы CGI, а во второй - 
строка cookie (если она определена).
   Далее наша программа анализирует параметр запуска.
   Если программа вызвана с параметром go, она проверяет переменную pszCookie. 
В эту переменную функция getenv записывает строку cookie или значение NULL, 
если cookie не определено.
   При первом посещении cookie еще нет, поэтому наша программа добавляет к 
заголовку HTTP формируемого документа заголовок Set-Cookie:
printf("Content-type: text/html\r\n");
printf(szCookieHeader);
   Затем программа выводит приглашение для первого посещения и завершает свою 
работу.
   В том случае, если в принятом запросе уже имеется информация о cookie, 
программа CGI извлекает значение параметра cookie с именем AgainCount, вызывая 
для этого функцию findCookie:
pszMyCookie = findCookie("AgainCount");
   Эта функция определена в нашей программе и будет описана чуть позже.
   Полученная строка преобразуется в численное значение при помощи функции atoi,
 после чего это значение увеличивается на единицу, преобразуется обратно в 
тестовую строку и записывается в буфер szBuf1:
nCount = atoi(pszMyCookie);
nCount++;
sprintf(szBuf1, "%d", nCount);
   На следующем этапе программа формирует заголовок Set-Cookie с новым 
значением параметра AgainCount:
printf("Content-type: text/html\r\n");
strcpy(szBuf, "Set-Cookie: AgainCount=");
strcat(szBuf, szBuf1);
strcat(szBuf, ";\r\nContent-type: text/html\r\n\r\n");
printf(szBuf);
   Этот заголовок вместе с заголовком Content-type записывается в создаваемый 
документ HTML.
   Далее после вывода приглашения для повторного посещения страницы программа 
CGI записывает в документ новое значение счетчика посещений:
printf("

Access count: %s",szBuf1); И, наконец, перед завершением своей работы программа вставляет в текст документа HTML файл со сценарием JavaScript, вызывая для этого функцию insertHTML: insertHTML("script.ht", szBuf); Эта функция определена в нашей программе, как и функция findCookie. Когда программа CGI вызывается для удаления cookie с параметром c

 
<<-[Весь Текст]
Страница: из 116
 <<-