информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetПортрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / web building
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Ошибка CGI 30.09.04 01:49  
Автор: Серый Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Скажу честно. Изучаю доступ к БД при помощи ODBC и списал программу с книги. Но постарался в ней разобраться и осмыслить каждую строчку. Вроде бы все нормально, но при активизации CGI-модуля с Web-страницы по ссылке сервак выдает такую информацию:

Ошибка CGI

Указанное приложение CGI не возвратило полный набор заголовков HTTP. Не возвращены заголовки:

SQLConnect error

Сервер настроил правильно (проверял на другом CGI приложении). Пользовательское DSN прописал. Программу CGI куда надо разместил. В чем может быть проблема?

PS1: Только не пишите пожалуйста, что чужие программы списывать нехорошо. Сам знаю;)
PS2: В книге у автора все прокатило (может, потому что в книге?).
модуль на обозрение и источник данных ODBC 01.10.04 07:13  
Автор: Korsh <Мельников Михаил> Статус: Elderman
<"чистая" ссылка>
Исходный текст CGI-модуля: 02.10.04 01:04  
Автор: Серый Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Исходный текст CGI-модуля:
int main(int argc, char* argv[])
{
	// определение системных переменных
	SQLHENV sql_henv = SQL_NULL_HENV;
	SQLHDBC sql_hdbc = SQL_NULL_HDBC;
	SQLHSTMT sql_hstmt = SQL_NULL_HSTMT;
		RETCODE err;
		UCHAR sys_DSN[SQL_MAX_DSN_LENGTH + 1] = "Authors_DB";
		UCHAR user_Name[MAXNAME] = "";
		UCHAR user_Password[MAXNAME] = "";

	// инициализация среды выполнения приложения
	err = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sql_henv);
	
	// анализ кода ошибки
	if (err != SQL_SUCCESS && err != SQL_SUCCESS_WITH_INFO) return 1;

	// установка параметров среды выполнения приложения
	err = SQLSetEnvAttr(sql_henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);

	// анализ кода ошибки
	if (err != SQL_SUCCESS && err != SQL_SUCCESS_WITH_INFO) return 1;

	// инициализация среды соединения
	err = SQLAllocHandle(SQL_HANDLE_DBC, sql_henv, &sql_hdbc);
	if (err != SQL_SUCCESS && err != SQL_SUCCESS_WITH_INFO) return 1;

	// установка соединения
	err = SQLConnect(sql_hdbc, sys_DSN, (SWORD)strlen((const char*)sys_DSN), user_Name,
									 (SWORD)strlen((const char*)user_Name), user_Password, (SWORD)strlen((const char*)user_Password));
	if (err != SQL_SUCCESS && err != SQL_SUCCESS_WITH_INFO)
		{	
			printf("SQLConnect error\n");
			return 1;
		}

	// получение идентификатора команд
	err = SQLAllocHandle(SQL_HANDLE_STMT, sql_hdbc, &sql_hstmt);
	if (err != SQL_SUCCESS && err != SQL_SUCCESS_WITH_INFO)
		{
			printf("SQLAllocHandle Error\n");
			return 1;
		}
	
	// выполнение команды
	err = SQLExecDirect(sql_hstmt, (unsigned char*) "SELECT * FROM Authors", SQL_NTS);
	if (err != SQL_SUCCESS && err != SQL_SUCCESS_WITH_INFO)
		{
			printf("SQLExecDirect Error\n");
			return 1;
		}
	
	// связывание указателей со значениями полей текущей записи
	SQLCHAR id[30];
	SQLCHAR name[30];
	SQLCHAR year[30];
	SQLINTEGER lid;
	SQLINTEGER lname;
	SQLINTEGER lyear;

	err = SQLBindCol(sql_hstmt, 1, SQL_C_CHAR, id, 30, &lid);
	err = SQLBindCol(sql_hstmt, 2, SQL_C_CHAR, name, 30, &lname);
	err = SQLBindCol(sql_hstmt, 3, SQL_C_CHAR, year, 30, &lyear);

	// вывод заголовка HTML-документа
	char *d = "%";
	printf("Content-type: text/html%c%c", 10, 10);  
	printf("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\"");
	printf("<HTML><HEAD><TITLE>ODBC Connection Test</TITLE></HEAD><BODY>");
	
/*	// вывод заголовка таблицы
	printf("<TABLE Width='100%s' CellSpacing=10 CellPadding=10 Border=3>", d);
	printf("<CAPTION Align='center'> Information from DataBase</CAPTION>");
	printf("<TR><TH Width='100%s'>Id</TH><TH>Имя</TH>Год</TH></TR>", d);
	
	// вывод строчек таблицы
	while ((err = SQLFetch(sql_hstmt)) != SQL_NO_DATA)
		{
			printf("<TR><TD>%15s</TD><TD>%25s</TD><TD>%10s</TD></TR>", id, name, year);
		}
	printf("</TABLE>");
*/
	printf("</BODY></HTML>");

	// удаление служебных переменных
	SQLFreeHandle(SQL_HANDLE_STMT, sql_hstmt);
	SQLDisconnect(sql_hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC, sql_hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV, sql_henv);
	
	return 0;
}

---
Источник данных: это стандартная (для примеров) БД на Access, расположенная по адресу D:\Inetpub\iissamples\sdk\asp\database\Authors.mdb. В администрировании компьютера указываю пользовательский DSN как "Authors_DB", определяю путь к БД и устанавливаю драйвер Microsoft Access driver (*.mdb). Не катит :(
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach