Witam!
Strony WWW na samym początku były tworzone w samym HTML-u, później wprowadzono coś takiego jak CGI.
I tym się dzisiaj zajmiemy.
Q:Co to jest CGI?
A: CGI (ang. Common Gateway Interface) to znormalizowany interfejs, umożliwiający komunikację pomiędzy oprogramowaniem serwera WWW a innymi programami znajdującymi się na serwerze. Zazwyczaj program serwera WWW wysyła do przeglądarki statyczne dokumenty HTML. Za pomocą programów CGI można dynamicznie (na żądanie klienta) generować dokumenty HTML uzupełniając je np. treścią pobieraną z bazy danych.
Źródło: http://pl.wikipedia.org/wiki/CGI
Q:Z czego będziemy korzystać?
A: Z Delphi i serwer-a Apache, a dokładniej pakietu xampp.
1. Prosta strona
Uruchamiamy Delphi(w moim przypadku jest to Delphi 7 Enterprise).
Klikamy File - New - Other…
Wybieramy Web Server Application z repozytorium.
Zaznaczamy jak powyższym obrazie, czyli “CGI-Stand-alone executable”.
I ok.
W Object Inspector wybieramy “Actions”(klikamy na “…”).
Powinno nam się pojawić coś mniej więcej takiego:
Teraz klikamy na “Add New(Ins)”.
Powinno nam się pokazać mniej więcej coś takiego:
Klikamy na to i w Object Inspectorze ustawiamy:
Default na true (oznacza to że będzie to domyślna strona).
PathInfo na “/default” (bez “”).
Resztę zostawiamy.
Teraz w Events, klikamy na onAction i pod tym zdarzeniem piszemy:
Teraz zapisujemy nasz projekt i kompilujemy.
Teraz musimy sprawdzić czy działa nasza “strona”. Ja w tym wypadku będę korzystał z serwer-a www
“Apache”, a dokładniej z pakietu xampp.
Ja w tym wypadku muszę umieścić stronę w “c:\xampp\cgi-bin”.
Teraz sprawdzamy! W moim przypadku adres strony to “http://localhost/cgi-bin/Project2.exe”.
localhost wskazuje na komputer na którym obecnie pracujesz.
2. Page Producer i przesyłanie danych metodą GET
Uruchamiamy Delphi(w moim przypadku jest to Delphi 7 Enterprise).
Klikamy File - New - Other…
Wybieramy Web Server Application z repozytorium.
Zaznaczamy jak powyższym obrazie, czyli “CGI-Stand-alone executable”.
I ok.
Wstawiamy na formę komponent “PageProducer” z zakładki “Internet”.
W object inspectorze klikamy na HTMLDoc i wpisujemy tam:
Następnie klikamy na “WebModule1″.
W Object Inspector wybieramy “Actions”(klikamy na “…”).
Następnie klikamy na “Add New(Ins)”.
Default ustawiamy na true.
PathInfo na “/default”.
ProducerContent na PageProducer1.
Teraz znowu klikamy na “Add New (Ins)”.
PathInfo ustawiamy na “/show”.
Po OnAction piszemy:
Teraz możemy to zapisać i skompilować.
Koniec.
ZAKAZ KOPIOWANIA NA INNE FORA, STRONY, ITP.
Strony WWW na samym początku były tworzone w samym HTML-u, później wprowadzono coś takiego jak CGI.
I tym się dzisiaj zajmiemy.
Q:Co to jest CGI?
A: CGI (ang. Common Gateway Interface) to znormalizowany interfejs, umożliwiający komunikację pomiędzy oprogramowaniem serwera WWW a innymi programami znajdującymi się na serwerze. Zazwyczaj program serwera WWW wysyła do przeglądarki statyczne dokumenty HTML. Za pomocą programów CGI można dynamicznie (na żądanie klienta) generować dokumenty HTML uzupełniając je np. treścią pobieraną z bazy danych.
Źródło: http://pl.wikipedia.org/wiki/CGI
Q:Z czego będziemy korzystać?
A: Z Delphi i serwer-a Apache, a dokładniej pakietu xampp.
1. Prosta strona
Uruchamiamy Delphi(w moim przypadku jest to Delphi 7 Enterprise).
Klikamy File - New - Other…
Wybieramy Web Server Application z repozytorium.
Zaznaczamy jak powyższym obrazie, czyli “CGI-Stand-alone executable”.
I ok.
W Object Inspector wybieramy “Actions”(klikamy na “…”).
Powinno nam się pojawić coś mniej więcej takiego:
Teraz klikamy na “Add New(Ins)”.
Powinno nam się pokazać mniej więcej coś takiego:
Klikamy na to i w Object Inspectorze ustawiamy:
Default na true (oznacza to że będzie to domyślna strona).
PathInfo na “/default” (bez “”).
Resztę zostawiamy.
Teraz w Events, klikamy na onAction i pod tym zdarzeniem piszemy:
Kod:
procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
HTML : string;
begin
HTML := '<html>' // Żeby zrozumieć ten kod potrzeba jest podstawowa znajomość HTML-a
+ '<head>'
+ '<title>Delphi i CGI</title>'
+ '</head>'
+ '<body>'
+ '<h1>Delphi i CGI</h1>'
+ '<hr>'
+ 'Witaj na stronie napisanej przy użyciu Delphi!'
+ '</body>'
+ '</html>';
Response.Content := HTML; // zwracamy to co jest w zmiennej HTML
end;
Teraz musimy sprawdzić czy działa nasza “strona”. Ja w tym wypadku będę korzystał z serwer-a www
“Apache”, a dokładniej z pakietu xampp.
Ja w tym wypadku muszę umieścić stronę w “c:\xampp\cgi-bin”.
Teraz sprawdzamy! W moim przypadku adres strony to “http://localhost/cgi-bin/Project2.exe”.
localhost wskazuje na komputer na którym obecnie pracujesz.
2. Page Producer i przesyłanie danych metodą GET
Uruchamiamy Delphi(w moim przypadku jest to Delphi 7 Enterprise).
Klikamy File - New - Other…
Wybieramy Web Server Application z repozytorium.
Zaznaczamy jak powyższym obrazie, czyli “CGI-Stand-alone executable”.
I ok.
Wstawiamy na formę komponent “PageProducer” z zakładki “Internet”.
W object inspectorze klikamy na HTMLDoc i wpisujemy tam:
Kod:
<html>
<head>
<title>Delphi i CGI</title>
</head>
<body>
<form action="/cgi-bin/Project1.exe/show" method="GET">
Wpisz swoje imie: <input id="" name="name" />
<input type="submit" value="Wyślij!" />
</form>
</body>
</html>
W Object Inspector wybieramy “Actions”(klikamy na “…”).
Następnie klikamy na “Add New(Ins)”.
Default ustawiamy na true.
PathInfo na “/default”.
ProducerContent na PageProducer1.
Teraz znowu klikamy na “Add New (Ins)”.
PathInfo ustawiamy na “/show”.
Po OnAction piszemy:
Kod:
procedure TWebModule1.WebModule1WebActionItem2Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
Imie : String;
HTML : TStringList;
begin
HTML := TStringList.Create(); // tworzy TStringList
Imie := Request.QueryFields.Values['name']; // Do imie przypisujemy wartosc name z GET ?name=xxx
Html.Add('<html>'); // generujemy witryne troche inny sposob niz pokazalem wczesniej
html.Add('<head><title>Delphi i CGI</title></head>');
html.Add('<body>');
html.Add('Nazywasz się ' + Imie);
html.Add('</body>');
html.Add('</html>');
Response.Content := Html.Text; // wysyłamy witrynę do użytkownika
end;
Koniec.
ZAKAZ KOPIOWANIA NA INNE FORA, STRONY, ITP.