Aplicațiile CGI simple pe Delphi


aplicație CGI Simplu de Delphi.

aplicație CGI Simplu de Delphi.

Mai întâi de toate, ceea ce este cgi. Este o abreviere a Common Gateway Interface limba engleză. Pe scurt, este o interfață între program și un WWW server (mai precis, un server HTTP). Ce este? Ce s-ar crea pagini HTML dinamice, care nu sunt doar text static și depind de datele introduse de utilizator și de condițiile externe.
Astfel, este posibil să se creeze site-uri atractive de pe Internet, adăugați dialoguri cu vizitatori, statistici, sondaje, lovit contoare, etc. Totul depinde de sarcinile și imaginația dezvoltator.

Deci, cum aveți o aplicație cgi?

Tot ce se va scrie în continuare se referă la Win și http IIS platforma de server. deși, în general valabil și pentru alte platforme și servere.
cerere cgi este un program care rulează sub sistemul de operare. În cazul nostru, acesta va fi doar un fișier executabil compilat (exe). Care consola (nu GUI, adică fără GUI) de tip. Interacțiunea cu serverul http se face cu ajutorul I / O standard și variabilele de mediu stabilite pentru această aplicație. În principiu, acest lucru este aproape suficient pentru înțelegerea :-) CGI. Ce se întâmplă cu adevărat? Să începem cu un simplu (de groaza ca tocit, dar în cazul în care pentru a merge) exemplu.

Ceea ce avem nevoie (și pentru exemple ulterioare, de asemenea)

Concluzia este simpla pagina cu semnul „Hello World“ (nu a fost încă dinamic).
  • Creați o nouă aplicație.
  • Ieși din singura formă a proiectului (nu este necesar să se mențină).
  • Du-te la meniul View -> sursa de proiect. Eliminați toate începe și se termină între.
  • Utilizările eliminați formele și scrie pentru Windows.
  • Înainte de a începe scris (la consola).
În timp ce preparatul este terminat, salvați proiectul în altă parte, cum ar fi hello.dpr. Acesta a fost modelul de bază. El a venit la îndemână, în viitor, astfel încât să poată fi duplicat și cum tmpl-cgi.dpr sau eliminați magazia. după cum doriți.
Înainte de a trece mai departe, să vedem ce se va întâmpla atunci când o cerere de client (browser) a paginii de pe server. Ie urmări întregul lanț de browser-ul prin intermediul serverului la programul dvs. și vice-versa.

Compilați și pune-l în directorul cgi-bin pe server, și apoi încercați să-l apelați din browser. Dacă ceva nu funcționează, trebuie să pokovyryatsya cu setările browser-ului, server și drepturi de acces. Și un program dublu de verificare pentru :-) ochepyatok. Dacă acest lucru nu funcționează, nu poți merge mai departe, așa că trebuie să fac să funcționeze.
Ea a câștigat? Voila! Dă-i drumul. (Dimensiunea programului De altfel, până când întreaga 8,5 kb)

Care sunt toate aceleași variabile de mediu devine programul nostru? Ei bine, pentru a avea o listă a ceea ce ne putem ocupa de procesarea cererii. Dacă se îngropa în ajutor, puteți găsi o pereche de funcții GetEnvironmentStrings LPVOID (GOALE) și FreeEnvironmentStrings bool (LPTSTR lpszEnvironmentBlock); Aceasta este ceea ce avem nevoie. Protsedurku a crea un obiect TStrings pentru a umple perechi variabilă = opțiune.

Acum, programul utilizează clauza trebuie să adăugați clase și SysUtils. Ea, cu toate acestea, vspuhnet mai mult de cinci ori, dar în cazul în care pentru a merge. Funcțiile avem nevoie. Nu le scrie toate la fel din nou? Ei bine, în cele din urmă va fi executat pe server, iar sursa nu va merge în rețea. Ce altceva mai vrei? Adăugați câteva variabile. Aici este textul programului:

Ceas care arată ora pe server.
Aceasta este pagina dinamică, se schimbă conținutul său în funcție de condițiile externe (timp pe server :-). Nu trebuie să existe nici o dificultate. Aici este codul programului. (GetEnvStrings aici nu este necesar)

Unitatea de clase aici nu este necesară. dimensiunea programului de 32 kilobytes. Ore statice, în sensul că, în timp ce ei nu sunt foarte „de funcționare“ (curge) și necesitatea de a actualiza reîncarcă pagina.

Modificarea: Auto Update Timpul. Noi folosim o comandă specială pentru browser-ul clientului. Pentru a face acest lucru, se introduce următoarea linie imediat după linia cu adevărul să reîncărcați pagina în fiecare secundă este foarte risipitor. Administratorii de sistem pot ucide pentru trafic :-) Este mic la această pagină, dar toate la fel.
aproximativ 160 octeți * 60 secunde * 60 minute * 24 ore * 30 zile = 395 megabiți pe lună.
Deci, fii atent cu REFRESH :-)

Aici trebuie să se țină cont de faptul că nu toate personajele ajung aici din șirul de interogare.
Cum ar fi un spațiu este tradus în 20% și în limba română problemă generală. Există mai multe nuanțe impuse de protocolul HTTP, astfel încât să examineze cu atenție caietul de sarcini, în caz contrar dvs. cgi-bin este plin de găuri. Pentru testele noastre, este model simplificat destul de adecvat fără lacune și excepții. El a construit o specificație simplă a parametrilor aplicației noastre (folosind versiunea veche a ceasului):
  • Dacă există un parametru de tip = simplu, fără ceas scoate secunde
  • Dacă există o culoare = număr de parametri, culoarea textului definit de numărul
perechile de parametri separate prin virgulă. Aici principala dificultate în parametrii de analiză. Dacă (așa cum am convenit) abstragirovatsya din potențialele probleme complexe ale parametrilor de codificare, aceasta poate ajuta din nou StringList proprietatea lui CommaText. Aici fragmente întregul program, vedeți codul sursă: