Egyszerű cgi alkalmazások Delphi


Egyszerű CGI alkalmazás Delphi.

Egyszerű CGI alkalmazás Delphi.

Először is, mi az a cgi. Rövidítés az angol Common Gateway Interface. Röviden ez egy olyan felület, a program és a WWW-szerver (pontosabban egy HTTP szerver). Mi ez? Mi lenne dinamikus HTML oldalak, melyek nem csak a statikus szöveget, és függ a felhasználói és külső feltételek.
Így lehetséges, hogy a vonzó helyek az interneten, add dialógusok a látogatók, a statisztika, közvélemény-kutatások, hit számlálók stb Minden attól függ, hogy a feladatok és a képzelet a fejlesztő.

Szóval hogyan lehet futtatni cgi alkalmazást?

Minden felírom tárgya továbbá Win és http IIS szerver platform. bár általában igaz más platformok és szervereket.
CGI-alkalmazás egy olyan program fut az operációs rendszer alatt. A mi esetünkben, akkor csak egy lefordított futtatható (exe) fájlt. Ahol a konzol (nem GUI, azaz anélkül, GUI) típusú. Kölcsönhatás a http szerver használatával történik a standard I / O és a környezeti változók létre erre a célra. Elvileg ez majdnem elég a megértéséhez cgi :-). Mi is történik valójában? Kezdjük egy egyszerű (horror, mint elcsépelt, de hová menjen) példa.

Amire szükségünk van (és a későbbi példák is)

A következtetés egyszerű oldal „Hello World” jel (még nem dinamikus).
  • Hozzon létre egy új alkalmazás.
  • Kifelé az egyetlen formája a projekt (nem szükséges fenntartani).
  • Válassza a Nézet menü -> Project forrás. Vegye ki az összes között kezdetét és végét.
  • A felhasználási távolítsa Forms és írjon a Windows.
  • Mielőtt elkezdené írásban (a konzol).
Bár a készítmény befejeződött, a projekt mentése valahol máshol, például hello.dpr. Ez volt az alap sablont. Ő jól jöhet a jövőben, így lehet sokszorosítani, és hogyan tmpl-cgi.dpr vagy távolítsa el a tárolóból. ahogy tetszik.
Mielőtt haladunk tovább, lássuk, mi fog történni, ha egy ügyfél kérésére (böngésző) az oldal a szerverről. Ie nyomon követni az egész láncot a böngésző segítségével a szervert a programot, és fordítva.

Fordítsd le és tedd a cgi-bin könyvtár a szerveren, majd próbálja meg hívni a böngésző. Ha valami nem működik, akkor pokovyryatsya a böngésző beállításait, a kiszolgáló és a hozzáférési jogok. És a kettős ellenőrzés program ochepyatok :-). Ha ez nem működik, akkor nem mozog, így azt kell, hogy működjön.
Ez szerzett? Voila! Menj előre. (Egyébként program mérete, amíg a teljes 8,5 kb)

Mi mind ugyanolyan környezeti változók kap a programban? Nos, van egy lista, hogy mi tudjuk kezelni a feldolgozó a kérelmet. Ha ásni HELP, megtalálja egy pár funkciót LPVOID GetEnvironmentStrings (void) és BOOL FreeEnvironmentStrings (LPTSTR lpszEnvironmentBlock); Ez az, amire szükségünk. Protsedurku létre TStrings objektumot töltse pár változó = lehetőséget.

Most a program uses kell hozzá Osztályok és SysUtils. Ő azonban vspuhnet több mint öt alkalommal, de hová menjen. A funkciók szükségünk. Ne írjon nekik mindegy újra? Nos, a végén, akkor lefut a szerveren, és a forrás nem megy a hálózaton. Mit akarsz még? Add pár változó. Itt a szöveg a program:

Óra, amely megmutatja az időt a szerver.
Ez a dinamikus oldal, megváltoztatja annak tartalmát függően a külső körülmények (időt a szerver :-). Nem szabad semmilyen nehézséget. Itt van a kód a program. (GetEnvStrings itt nem szükséges)

Osztályok egység itt nincs szükség. Program mérete 32 kilobájt. Óra statikus abban az értelemben, hogy bár ezek nem nagyon „fut” (folyik), és annak szükségességét, hogy az oldal újratöltődik.

Módosítás: Automatikus frissítés ideje. Mi egy speciális parancsot a kliens böngészőnek. Ehhez helyezze be a következő sort követően azonnal sor az igazság az oldal újratöltődik minden második nagyon pazarló. A rendszergazdák ölni forgalom :-) Ez kicsi ezen az oldalon, de mindegy.
mintegy 160 byte * 60 másodperc * 60 perc * 24 óra * 30 nap = 395 megabájt havonta.
Ezért legyünk óvatosak a FRISSÍTÉS :-)

Itt meg kell jegyezni, hogy nem minden a karakterek, hogy itt a query string.
Mint például egy tér van lefordítva 20%, és a magyar nyelv az összes problémát. Sok árnyalatok által kiszabott HTTP protokoll, hogy gondosan vizsgálja meg az előírásoknak, különben a cgi-bin tele van lyukakkal. A teszt-, ez elég alkalmas egyszerűsített modellje hézagmentesen és kivételek. Ő épített egy egyszerű leírás a paramétereket a kérelem (a régi verziót a clock):
  • Ha van egy paraméter Type = egyszerű, kimenetre az órát anélkül másodperc
  • Ha van egy paraméter Color = szám, a szín, a szöveg által meghatározott száma
paraméter párokat vesszővel elválasztva. Itt a fő nehézséget az elemzés paramétereit. Ha (ahogy megbeszéltük) abstragirovatsya a potenciális bonyolult kódolási paramétereket, ez segíthet újra StringList ő CommaText tulajdon. Itt töredékek egész programot, lásd a forráskód: