» » » Bob Swart - Интернет решения от доктора Боба


Авторские права

Bob Swart - Интернет решения от доктора Боба

Здесь можно скачать бесплатно "Bob Swart - Интернет решения от доктора Боба" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Bob Swart - Интернет решения от доктора Боба
Рейтинг:
Название:
Интернет решения от доктора Боба
Автор:
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Интернет решения от доктора Боба"

Описание и краткое содержание "Интернет решения от доктора Боба" читать бесплатно онлайн.








 var

   RequestMethod: TRequestMethod = Unknown;


 initialization

   P := GetEnvironmentStrings;

   while P^ <> #0 do

   begin

     Str := StrPas(P);

     if Pos('REQUEST_METHOD=',Str) > 0 then

     begin

       Delete(Str,1,Pos('=',Str));

       if Str = 'POST' then RequestMethod := Post

       else

         if Str = 'GET' then RequestMethod := Get

     end;

     if Pos('CONTENT_LENGTH=',Str) = 1 then

     begin

       Delete(Str,1,Pos('=',Str));

       ContentLength := StrToInt(Str)

     end;

     if Pos('QUERY_STRING=',Str) > 0 then

     begin

       Delete(Str,1,Pos('=',Str));

       SetLength(Data,Length(Str)+1);

       Data := Str

     end;

     Inc(P, StrLen(P)+1)

   end;

   if RequestMethod = Post then

   begin

     SetLength(Data,ContentLength+1);

     for i:=1 to ContentLength do read(Data[i]);

     Data[ContentLength+1] := '&';

   { if IOResult <> 0 then { skip }

   end;

   i := 0;

   while i < Length(Data) do

   begin

     Inc(i);

     if Data[i] = '+' then Data[i] := ' ';

     if (Data[i] = '%') then { special code }

     begin

       Str := '$00';

       Str[2] := Data[i+1];

       Str[3] := Data[i+2];

       Delete(Data,i+1,2);

       Data[i] := Chr(StrToInt(Str))

     end

   end;

   if i > 0 then Data[i+1] := '&'

            else Data := '&'

 finalization

   Data := ''

 end.

Я написал кучу CGI приложений за последний год и все они используют модуль DrBobCGI. Теперь реальное пример: стандартное CGI приложение – гостевая книга (guestbook), в которой запрашивается ваше имя и небольшой комментарий, написанное с помощью всего нескольких строк на Дельфи.

Вначале CGI форма:

<HTML>

<BODY>

<H2>Dr.Bob's Guestbook</H2>

<FORM ACTION=http://www.drbob42.com/cgi-bin/guest.exe

  METHOD=POST>

  Name: <INPUT TYPE=text NAME=name><BR>

  Comments: <TEXTAREA COLS=42 LINES=4 NAME=comments>

  <P>

  <INPUT TYPE=SUBMIT VALUE="Send Comments to Dr.Bob">

  </FORM>

  </BODY>

  </HTML>

Теперь консольное приложение:

 program CGI;

 {$I-}

 {$APPTYPE CONSOLE}

 uses

   DrBobCGI;

 var

   guest: Text;

   Str: String;

 begin

   Assign(guest,'book.htm'); // assuming that's the guestbook

   Append(guest);

   if IOResult <> 0 then // open new guestbook

   begin

     Rewrite(guest);

     writeln(guest,'<HTML>');

     writeln(guest,'<BODY>')

   end;

   writeln(guest,'Date: ',DateTimeToStr(Now),'<BR>');

   writeln(guest,'Name: ',Value('name'),'<BR>');

   writeln(guest,'Comments: ',Value('comments'),'<HR>');

   reset(guest);

   while not eof(guest) do // now output guestbook itself

   begin

     readln(guest,Str);

     writeln(Str)

   end;

   close(guest);

   writeln('</BODY>');

   writeln('</HTML>')


Вопрос:

У меня на форме две "submit" клавиши, одна на переход на предыдущую страницу, другая переход на следующую страницу. Как определить какая из них была нажата, чтобы я мог выполнить соответствующее действие.

Доктор Боб отвечает:

Вы должны назначить уникальное значение для каждой кнопки "type=submit", ниже приведен соответствующий код:


<HTML>

<BODY>

Edit the information and press the SAVE button<BR>

To Delete information, press the DELETE button<BR>

<P>

<FORM METHOD=POST ACTION=http://www.drbob42.com/cgi-bin/debug.exe>

<HR>

<input type=text name=name>

<P>

<input type=reset  value="RESET">

<input type=submit name=action value="SAVE">

<input type=submit name=action value="DELETE">

</FORM>

</BODY>

</HTML>

Вы должны получить "Action=SAVE" или "Action=DELETE" после нажатия одной из этих кнопок.

2. html и CGI/WinCGI "трудный путь"

В данной главе показывается, как опубликовать вашу базу данных в Интернете путем (1) генерации статических страниц из таблиц базы данных, (2) написания CGI/WinCGI приложений для выполнения запросов к базе данных без использования Delphi Web Modules.

2.1. HTML– страницы

Допустим, вы имеете базу данных с продуктами. Бумажная реклама очень накладна. Но реклама в web это что-то новое и за приемлемую цену. Хорошо было бы иметь вашу базу опубликованной в Интернете, не так ли? Но организация своего собственного сайта на NT Web Server, работающего с инструментом типа IntraBuilder или WebHub стоит больших денег, включая время ни эксперименты и настройку. В данной главе мы покажем быстрый путь и простой путь публикации вашей базы данных на web: просто генерируя статические HTML страницы, базируясь на записях в таблице. Накладно? Нет. Сложно? Я так не думаю. Позвольте указать простой путь на небольшой базе данных.

2.1.1. Delphi и HTML

Мой главный инструмент разработчики это Дельфи, и мы напишем Delphi Database HTML Expert в данной главе. Дельфи позволяет подсоединяться практически к базе данных любого формата. С помощью BDE к Парадоксу и dBASE, с помощью ODBC например к Access, и с помощью SQL Links к большим DBMS типа InterBase, Oracle, Sybase и Informix. Также, вы можете купить дополнительные продукты типа Apollo для связи с таблицами Clipper и FoxPro. В этой главе мы будем использовать базы формата Парадокс. Парадокс имеет достаточно развитый формат, что решает многие проблемы при преобразовании полей, типов и значения из базы в HTML.

2.1.2. Basic HTML

Ввод будет преобразовываться в формат базы данных, а вывод в формат HTML-страниц.

2.1.3. Преобразование полей

HTML страница может содержать только простой ASCII текст. Конечно, здесь могут быть и другие вещи встроенный в текст, обычно картинки в .GIF или .JPEG формат. Таблица базы данных содержит поля, у которых есть значения, которые можно преобразовать в строки символов. Дельфи даже имеет встроенное свойство "AsString" для всех основных классов наследованных от TField. Свойство AsString в действительно преобразующие свойство. Для TStringField, AsString может использоваться для чтения значения из поля как строка. Для TBCDField, TCurrencyField, TDateField, TDateTimeField, TFloatField, TIntegerField, TSmallintField, TTimeField, и TWordField, свойство AsString преобразует тип в строку при чтении из поля. Для TBooleanField, свойство AsString возвращает 'T' или 'F'. Для TMemoField, TGraphicField, TBlobField, TBytesField или TVarBytesField, свойство AsString должно использоваться только для чтения из поля. Это возвращает строковое выражение '(Memo)', '(Graphic)', '(Blob)', '(Bytes)' или '(Var Bytes)' соответственно. Так как мемо поля могут содержать важную текстовую информацию, я решил игнорировать все кроме TMemoField, и при работе с TMemoField мы можем использовать метод SaveToStream для чтения данных из поля, как мы увидим это позже. Так что мы можем разделить их на две группы: те у которых мы можем использовать свойство AsString, и те у которых нет. Мы можем определить третий тип (неизвестный – unknown), и использовать следующие определения для таблиц не более 255 полей:

const

  MaxField = 255;

  sf_UnKnown = 0;

  sf_String  = 1;

  sf_Memo    = 2;


var

  FieldTypes: Array[0..Pred(MaxField)] of Byte; { default unknowns }

Мы должны просмотреть структуру таблицы для получения информации об типах полей:

 with TTable.Create(nil) do

 try

   DatabaseName := ADatabase;

   TableName := ATable;

   Active := True;

   keys := -1; { no key in table }

   for i:=0 to Pred(FieldDefs.Count) do

   begin

     if Fields[i].IsIndexField then keys := i;

     FieldTypes[i] := sf_String; { default }

     if (FieldDefs[i].FieldClass = TMemoField) then

       FieldTypes[i] := sf_Memo

     else

       if (FieldDefs[i].FieldClass = TGraphicField) or

          (FieldDefs[i].FieldClass = TBlobField) or

          (FieldDefs[i].FieldClass = TBytesField) or

          (FieldDefs[i].FieldClass = TVarBytesField) then


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Интернет решения от доктора Боба"

Книги похожие на "Интернет решения от доктора Боба" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Bob Swart

Bob Swart - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Bob Swart - Интернет решения от доктора Боба"

Отзывы читателей о книге "Интернет решения от доктора Боба", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.