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

Тут можно читать онлайн Bob Swart - Интернет решения от доктора Боба - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Интернет решения от доктора Боба
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.89/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Интернет решения от доктора Боба - описание и краткое содержание, автор Bob Swart, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Интернет решения от доктора Боба - читать онлайн бесплатно полную версию (весь текст целиком)

Интернет решения от доктора Боба - читать книгу онлайн бесплатно, автор Bob Swart
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

P: PChar;

i: Integer;

Str: ShortString;

type

TRequestMethod = (Unknown,Get,Post);

var

RequestMethod: TRequestMethod = Unknown;

initialization

P := GetEnvironmentStrings;

whileP^ <> #0 do

begin

Str := StrPas(P);

ifPos('REQUEST_METHOD=',Str) > 0 then

begin

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

ifStr = 'POST' thenRequestMethod := Post

else

ifStr = 'GET' thenRequestMethod := Get

end;

ifPos('CONTENT_LENGTH=',Str) = 1 then

begin

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

ContentLength := StrToInt(Str)

end;

ifPos('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;

ifRequestMethod = Post then

begin

SetLength(Data,ContentLength+1);

fori:=1 toContentLength do read(Data[i]);

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

{ if IOResult <> 0 then { skip }

end;

i := 0;

whilei < Length(Data) do

begin

Inc(i);

ifData[i] = '+' thenData[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;

ifi > 0 thenData[i+1] := '&'

elseData := '&'

finalization

Data := ''

end.

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

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

Dr.Bob's Guestbook

METHOD=POST>

Name:

Comments:

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

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,'');

writeln(guest,'

')

end;

writeln(guest,'Date: ',DateTimeToStr(Now),'
');

writeln(guest,'Name: ',Value('name'),'
');

writeln(guest,'Comments: ',Value('comments'),'


');

reset(guest);

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

begin

readln(guest,Str);

writeln(Str)

end;

close(guest);

writeln('

');

writeln('

')
Вопрос:

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

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

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

Edit the information and press the SAVE button

To Delete information, press the DELETE button


Вы должны получить "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 }

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

withTTable.Create( nil) do

try

DatabaseName := ADatabase;

TableName := ATable;

Active := True;

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Bob Swart читать все книги автора по порядку

Bob Swart - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Интернет решения от доктора Боба отзывы


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


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

Напишите свой комментарий
x