CGI skripte: kaj je to, kako ga ustvariti

CGI je kratica za Common Gateway Interface. To je tako imenovani majhen program, ki ponuja zanesljiv način interakcije s spletnimi strežniki v brskalniku z izvajanjem teh metod, ki jih s HTML ni bilo mogoče. Večina skriptov CGI je napisanih v Perlu. To je običajen programski jezik, ki se uporablja za izdelavo skriptov na strani strežnika s standardno besedilno datoteko s pripono (.cgi).

Splošni pogoji programa

Pred uporabo CGI skriptov mora uporabnik preveriti, ali njihovo spletno mesto podpira spletno mesto, in podati, ali ima razvijalec pooblastilo za uporabo skripta. Nekateri gostitelji tega ne dovoljujejo. Če razvijalec spletnega mesta pri prenosu datotek HTML vidi mapo CGI-bin, lahko uporablja skripte GCI.


Nekateri gostitelji bodo zahtevali svojo funkcijo CGI-bin, ker ni vedno na voljo privzeto. Drugi gostitelji lahko testirajo in odobrijo skripte, preden dovolijo uporabo skriptov CGI. Če razvijalec ne potrebuje urejanja, še vedno potrebuje urejevalnik besedila, da napiše skript za zahteve spletnega mesta. Ne glede na to, kaj urednik namerava uporabljati, je pomembno, da datoteko shranite kot navadno besedilo. Poleg tega potrebujete program FTP, ki je priložen komercialni različici Pro ali brezplačni različici Lite. Vsaka možnost bo delovala tako dolgo, dokler se bo naložila v načinu ASCII, da vam pomaga pri pregledovanju namestitve, saj lahko ustvarjanje skriptov CGIvzeti veliko časa.


Konfiguracija in namestitev

Če ima uporabnik CGI-bin, obstaja dobra priložnost za zagon skripta CGI. Za pravilno namestitev priporočamo, da si ogledate stran s pogostimi težavami s spletnim gostiteljem, nadzorno ploščo spletnega mesta, podporne dokumente ali sporočilo o namestitvi. Ena najpogostejših napak za spletne skrbnike je namestitev napačnih poti s skripti CGI. Če je skript že odprt za uporabo, mora biti pot pravilna, sicer strežnik ne bo deloval. Dokler se skript odpre, preverite povratne informacije za vse spremenljivke, ki zahtevajo namestitev in komentarje v tej vrstici, ki se začne z "#". Ko je podan skript za strežnik, lahko začnete prenos. To storite v načinu ASCII, ker je preprost skript CGI besedilna datoteka. Tehnično lahko skripte izvedete iz kateregakoli imenika, vendar večina gostiteljev dovoljuje, da se to izvede samo s CGI-bin. Prav tako je pomembno uporabiti pravilno dovoljenje za datoteke, ki uporabljajo skript CGI.

Dovoljenja za datoteke

Obstajajo tri vrste dostopa do podatkov s tremi različnimi dovoljenji za vsako skupino.
Strežniki Unix vam omogočajo, da nastavite različne ravni dostopa. Pomembno je vedeti, katera dovoljenja ima skript:
  • Skupina - je sestavljena iz dodanih uporabnikov na strežniku. Če je potrebno, jim bo dovoljeno odstraniti dovoljenje.
  • Uporabnik - je sestavljen samo iz lastnika datoteke v skupini, to je gostujoči račun.
  • Drugo skupino sestavljajo vsi drugi vidiki na strežniku.
  • Branje - uporabnikom omogoča branje in razumevanje podatkov, navedenih v datoteki.
  • Dovoljenje za pisanje - pisanje bo uporabnikom omogočilo dešifriranje in pisanje novega datuma, brisanje starih podatkov iz arhiva.
  • Execute - dovoljenje za izvršitev bo omogočilo pošiljanje datoteke samo, če se izvede program ali skript Upload CGI exe. Potrditev, da bo skript delal pred povezavo v javnem načinu.
  • Primer uporabe

    CGI - Program poenostavlja ustvarjanje kompleksnih, zmogljivih, več spletnih aplikacij, oblikovanje, pisanje in razvoj spletnih projektov. Inteligentno uporablja sodobne tehnologije in metode, ki jih razvijalec veže z vsakim naborom operacijskih sistemov ali strežniških orodij.
    Ima majhno težo (v smislu uporabe pomnilnika), zaradi česar je primeren za navadna okolja CGI in visoko zmogljivost v trajnih okoljih, kot sta FastCGI ali mod_perl. Z dodatkom PLUGINS-a, ko vaše potrebe rastejo, lahko po potrebi uporabljate napredne funkcije, na primer, morate napisati aplikacijo za iskanje po zbirki podatkov gradnikov. Primer skripta je tisto, kar uporabnik dejansko kliče spletni strežnik. To je zelo majhna preprosta datoteka, ki preprosto ustvari primerek vmesnika programa in pokliče podedovano metodo run (). Spodaj je popoln opis "widgetview.cgi": #! /Usr /bin /perl -wuse WidgetView my $ webapp = WidgetView- & gt; new () $ webapp- & gt; run () Kot lahko vidite, widgetview.cgi preprosto uporablja aplikacijo Modul, ki izvaja paketPerl se imenuje WidgetView.pm. CGI Application skrbi za izvajanje novih () in run () metod. V tem primeru uporabnik ne sme nikoli klicati print () za pošiljanje izhodov na STDOUT. Namesto tega se celoten izhod vrne kot skalar.
    CGI je najpomembnejši prispevek k upravljanju stanja vloge. Vse, kar je potrebno za napredovanje programa, je nastavitev vrednosti parametra oblike HTML "rm" na vrednost načina izvajanja, ki jo je treba obdelati s pošiljanjem obrazca. To je ključ do aplikacije CGI.

    Metode pisanja scenarijev

    Uporabnik CGI Application dostopa do številnih vdelanih metod. Spodaj so navedeni tisti, ki se kličejo iz skripta. Metoda new () je konstruktor za CGI. Vrne povezavo do paketa aplikacij (razred). Lahko sprejme niz parametrov kot pari: key = & gt; pomena.
    Ta metoda lahko sprejme nekatere posebne parametre:
  • TMPL_PATH - Določa pot do imenika predloge.
  • QUERY - omogoča, da podate že ustvarjen objekt zahteve CGI.pm.
  • PARAMS - ta parameter vam omogoča nastavitev številnih prilagodljivih načinov med izvajanjem. S posredovanjem različnih vrednosti v različnih skriptih primerkov, ki uporabljajo isti programski modul, lahko dosežete višjo stopnjo ponovne uporabe.
  • Run () je klican na objekt aplikacijskega modula iz skripta. Pri klicanju izvede funkcionalnost vmesnika aplikacijskega modula.

    Ta metoda najprej opredeli stanje aplikacije tako, da pogleda vrednost parametra CGI, ki je določen s parametrom mode_param (). Privzeto je "rm" za "Run Mode", ki bo vseboval ime načina delovanja. Četo ni podano, privzeto stanje je enako vrednosti start_mode (). Ko je način podan, run () pogleda pošiljanje tabele, shranjeno v run_modes (), in najde kazalec funkcije, ki je vnesen iz imena načina. Če jo najdemo, se kliče funkcija in vrnejo se podatki print (), ki se pošljejo STDOUT in v brskalniku. Če določenega načina ni mogoče najti v tabeli run_modes (), run () croak ().

    PSGI Support

    Aplikacija ponuja vgrajeno podporo za PSGI. Privzeti predmet za to je: psgi_app () $ psgi_coderef = WebApp-> psgi_app ({args to new ()}) Najlažji način je ustvariti in vrniti PSGI-združljiv kodo. Argumente morate posredovati hashref na enak način kot novi. To vrne PSGI-združljivo kodo z uporabo CGI ::: PSGI kot objekta poizvedbe. Če želite uporabiti drug predmet poizvedbe, ustvarite lasten objekt run_as_psgi (), kot sledi: run_as_psgi () moj $ psgi_aref = $ webapp- & gt; , ki jo zahteva specifikacija PSGI. To uporabite, če želite zagnati aplikacijo prek upravljavca, skladnega s standardom PSGI, kot je Plack. Končni rezultat lahko izgleda takole:
    Specifikacija PSGI lahko vrne deskriptor datoteke ali povezavo podprograma namesto nizov bajtov. V načinu PSGI ga podpira neposredno aplikacija CGI.

    Metode možnega razveljavitve

    CGI izvaja nekatere od metod, za katere se pričakuje, da bodo ponovno opredeljene z njihovim izvajanjem v modulu podrazreda. Te metode so naslednje:
  • Setup (). Ta metoda se imenuje podedovana metoda konstruktorja new ().
  • Metodo setup () je treba uporabiti za definiranje naslednje lastnosti lastnosti.
  • Metoda setup () lahko pokliče katero koli od primerkov primerka prilagojene aplikacije. Ta funkcija je dober kraj za določanje lastnosti, značilnih za program, s pomočjo $ webapp- & gt; param () Metodo setup () lahko izvedemo kot spodnjo sliko:
    Vendar pa pogosto vse, kar bi moralo biti v setup (), definira zagonske načine AutoRunmode, kar vam omogoča, da to storite s preprosto sintakso, ki uporablja atribute zagona. Metoda raztrganja (). Če se izvede, se samodejno pokliče po izdelavi skriptov CGI in zagonu programa. Lahko se uporablja za čiščenje po operacijah. Tipična uporaba funkcije teardown () je onemogočiti povezavo z bazo podatkov, ki je bila nastavljena v možnosti setup (). Za shranjevanje informacij o stanju na strani strežnika lahko uporabite tudi metodo teardown (): cgiapp_init ().

    Pošiljanje praznega URI-ja za zagon načinov

    isti vir je lahko: /item /15 /pogled. Postopek preslikave teh URI-jev v način delovanja se imenuje dispečiranje in ga upravlja CGI :: Application :: Dispatch. Dodatni upravitelj ni potreben. Na CGI :: Application lahko delate na namiznem ali prenosnem računalniku, ne da bi morali namestiti celovit spletni strežnik, kot je Apache. Namesto tega namestite CGI :: Application :: Server s CPAN. Po namestitvi bo uporabnik po nekaj minutahstrežnika aplikacij. Izvedite avtomatsko testiranje. Test :: WWW :: Mechanize :: CGIApp vam omogoča izvajanje funkcionalnega testiranja CGI :: App brez zagona spletnega strežnika. Test :: WWW :: Mehanizem lahko uporabite za validacijo programa preko tega spletnega strežnika. Neposredno testiranje je tudi enostavno. CGI - Program običajno natisne izhodne podatke svojih načinov delovanja v STDOUT. To lahko preprečite s spremenljivko okolja CGI_APP_RETURN_ONLY. Aplikacija ima arhitekturo plug-in, ki je enostavna za uporabo in razvija nove vtičnike.

    Vmesnik vsebine CGI

    To je bil prvi nabor specifikacij za razvoj dinamične vsebine na spletnem strežniku. Vsebina CGI, dostavljena uporabnikom, ni statična HTML-koda, ki se bere iz datoteke na strežniku. To je dinamična vsebina, ustvarjena v skriptu, ki lahko izvleče informacije iz baze podatkov, prilagodi vsebino tipu brskalnika, zahteva, ali je nov uporabnik ali ne. PHP je jezik, posebej zasnovan za izvajanje dinamičnih vsebin na spletnih strežnikih. Zaradi tega je veliko lažje razviti CGI skripte v PHP kot v drugih jezikih. Ko strežnik začne izvajati, zagotovi vse kontekstualne informacije, ki jih potrebuje:
  • Informacije o polni poizvedbi, vključno z imenom /IP oddaljenega gostitelja, zahtevanim URL-jem in njegovimi argumenti, nizom poizvedb (če obstaja).
  • Piškotki, povezani z zahtevo.
  • V primeru zahteve POST, ki je posledica pošiljanja spletnih obrazcev, imen in vrednosti parametrov.
  • Osnovni primer PHP skripta

    Skript mora izvesti postopek in nato prikazati veljavno kodo HTML, vključno sGlave HTTP. Primer PHP skripta:
    V tem skriptu sta prva in zadnja vrstica HTML, ponudbe PHP pa so zaprte v označevalce, nato pa prejmejo skript iz brskalnika in dodajo niz poizvedb iz dveh argumentov, data1 in data2. Poleg globalne spremenljivke $ _SERVER so v skriptu na voljo tudi naslednji asociativni nizi zagona skriptov CGI:
  • $ _GET - imena in vrednosti argumentov, posredovanih strežniku za zahtevo GET.
  • $ _POST - imena in vrednosti parametrov, poslanih strežniku v zahtevi POST, pri pošiljanju obrazca.
  • $ _COOKIE - Imena in vrednosti piškotkov, priloženih zahtevi.
  • $ _REQUEST - vsi elementi v $ _GET, $ _POST in $ _COOKIEnpm za izvajanje skriptov php iz nodejs preko cgi. Ta modul je bil zasnovan za deskshell, ki zagotavlja neovirano obdelavo php skript.
  • Glede na to, da razvijalec prejme zahtevo v nodejs in ima predmet zahteve, imenovan req, in predmet, imenovan res, mora uporabiti ta modul, kot sledi:
    Zato se bo zahteva za /test.php ujemala s modulu php za skripte CGI. Funkcija paramsForRequest bere objekt poizvedbe in za poizvedbo nastavi pravilne spremenljivke cgi okolja. To je podano kot ločena funkcija, zato lahko po potrebi dodate dodatne spremenljivke poizvedbe. Funkcija detectBinary v oknu išče dodaten modul strani php-bin-win32 ", ki zagotavlja prenosno datoteko php. Ta koda deluje za deskshell in če jo je potrebno uporabiti za druge namene in dodatne funkcije.

    Prvi program

    Za pisanje preprostega programa CGI v Perlu po tradiciji uporabite besedno zvezo "hello world". Tukaj jepredstavljeni v celoti. Shranite jo v datoteko z imenom hello v imeniku cgi-bin in jo zaženite z URL-jem: localhost /cgi-bin /hello v brskalniku. Uporabnik mora v brskalniku videti besedilo "Pozdravljeni svet". Če ne, si oglejte razdelek za razdeljevanje napak v programih CGI, ki vam pomagajo pri odpravljanju težav. To je preprost program. Obstaja le nekaj točk, ki razlikujejo razvoj skriptov CGI na Perlu od standardnega programa, ki se izvaja iz ukazne vrstice. Prva je možnost -T na liniji shebang. S tem se Perl prevede v "taint" način. V tem načinu bo Perl samodejno prezrl vse podatke, ki prihajajo od uporabnika, in ne bo dovolil prenosa teh podatkov v operacijski sistem, dokler niso izbrisani. V tem smislu je barvni način dobra ideja. Druga razlika je v tem, da dodate vrstico, ki natisne glavo vsebine. To bo prvi vzorec uporabnika s protokolom CGI. Vsi programi CGI morajo v brskalnik uporabnika oddati niz glav. V večini primerov je edina glava, ki jo je treba vrniti, vsebina. To pove brskalniku, katere podatke program pošlje. Ta primer vrne navadno besedilo, tako da je vrsta vsebine »text /plain«. Običajno se vrne HTML, tako da bo vrsta vsebine "text /html". Ni razlogov, zakaj program ne more vrniti bolj zapletenih podatkov, kot je PNG ("image /png"). Nabor glav je treba ločiti od dejanskih podatkov s prazno vrstico. To se doseže s tiskanjem dveh znakov nove vrstice po končni glavi CGI skripta na strežniku.izhod v STDOUT. Spletni strežnik bo organiziran tako, da bo zbral vse podatke, shranjene v STDOUT, in jih prenesel nazaj v brskalnik. Prejšnji primer dejansko ni storil ničesar. Ni potrebe, da imate program CGI, ki prikazuje samo fiksno besedilo. To lahko enostavno naredite z uporabo strani HTML. Uporabnik se mora naučiti iz primera dinamičnega izhoda. Na primer, skript, ki natisne trenutni čas:
    Ta skript deluje na enakem principu kot zadnji, vendar daje sistemskemu času uporabo funkcije razvoja CGI skriptov na Perl - "localtime" in natisne vrednost. Vsakič, ko se skript ponovno naloži, bo čas posodobljen. Ta skript ponovno prikaže golo besedilo. Razmisliti morate o različici, ki vrne HTML:
    Ta program je nekoliko bolj zapleten, vendar dejansko počne isto kot v prejšnjem primeru. Dodana kompleksnost izhaja iz dejstva, da morajo prikazati celotno stran HTML. Če je uporabnik kdaj gledal nastavitve vašega brskalnika, je verjetno videl potrditvena polja ali stikala, ki omogočajo ali onemogočajo javascript in java, vendar jih nikoli ne vidijo za CGI ali PHP. To je zato, ker javascript in Java izvajata brskalnik (ali ne, če ju uporabnik izklopi). Brskalnik ne ve ničesar o CGI ali PHP. Po izvedbi skriptov na strežniku preprosto dobi čisto HTML kodo. Vgrajena metoda za ustvarjanje CGI PHP skriptov, ColdFusion, ASP se v glavnem uporabljajo razvijalci, ustvarja prednje spletne strani, ki bodo na primer dostopale do baz podatkov nazaj.spletne aplikacije odjemalec /strežnik. Velika prednost metode CGI je, da so skripte shranjene v datotekah, tako da je dobesedno na tisoče prosto dostopnih skriptov, ki so že napisani in pripravljeni za prenos in uporabo na spletni strani. To pomeni, da vam ni treba učiti skriptnega jezika, da bi dobili prednosti skriptov, ki so že opravili to delo.

    Sorodne publikacije