CGI skripte: što je to, načini za stvaranje

CGI je kratica za Common Gateway Interface. Riječ je o takozvanom malom programu koji nudi pouzdan način interakcije web poslužitelja u pregledniku izvođenjem tih metoda koje su bile nemoguće uz HTML. Većina CGI skripti je napisana u Perl-u. To je uobičajeni programski jezik koji se koristi za stvaranje skripti na strani poslužitelja sa standardnom tekstualnom datotekom s nastavkom (.cgi).

Opći uvjeti programa

Prije korištenja CGI skripti, korisnik mora provjeriti podržava li web-lokacija njihovu web-lokaciju i odrediti da li je programer ovlašten koristiti skriptu. Neki domaćini to ne dopuštaju. Ako programer web-lokacije vidi mapu CGI-bin prilikom preuzimanja HTML datoteka, dopušteno je koristiti GCI skripte.


Neki će domaćini zatražiti svoju CGI-bin funkciju jer ona nije uvijek zadana prema zadanim postavkama. Drugi hostovi mogu testirati i odobriti skripte prije davanja dozvole za korištenje CGI skripti. Ako programer ne treba uređivati, još uvijek mu je potreban uređivač teksta da bi napisao skriptu za zahtjeve web-mjesta. Što god urednik namjeravao koristiti, važno je spremiti datoteku kao običan tekst. Osim toga, trebat će vam FTP program koji dolazi s komercijalnom verzijom Pro-a ili besplatnom verzijom Lite-a. Bilo koja opcija funkcionirat će sve dok se učitava u ASCII modu kako bi vam pomogla da prođete kroz instalaciju, jer kreiranje CGI skripti možeuzeti puno vremena.


Konfiguracija i instalacija

Ako korisnik ima CGI-bin, onda postoji dobra šansa za pokretanje CGI skripte. Za ispravnu instalaciju preporučujemo da pregledate stranicu uobičajenih problema s web-hostom, upravljačku ploču web-mjesta, dokumente za podršku ili poruku o instalaciji. Jedna od najčešćih webmaster pogrešaka je instalacija CGI skripti s pogrešnim putem. Ako već postoji skripta otvorena za upotrebu, staza mora biti ispravna, inače poslužitelj neće raditi. Sve dok se skripta otvori, provjerite povratne informacije za sve varijable koje zahtijevaju instalaciju i komentare na toj liniji koja počinje s "#". Kada se odredi skripta za poslužitelj, možete započeti preuzimanje. Svakako to učinite u ASCII modu, jer je jednostavna CGI skripta tekstualna datoteka. Tehnički, skripte se mogu izvršavati iz bilo kojeg direktorija, ali većina hostova dopušta da se to izvrši samo s CGI-bin-om. Također je važno koristiti ispravna dopuštenja za datoteke koje koriste CGI skriptu.

Dozvola za datoteke

Postoje tri vrste pristupa podacima s tri različite dozvole za svaku grupu.
Unix poslužitelji omogućuju vam da postavite različite razine pristupa. Važno je znati koje dozvole ima skripta:
  • Skupina - sastoji se od dodanih korisnika na poslužitelju. Ako je potrebno, moći će ukloniti svoje dopuštenje.
  • Korisnik - sastoji se samo od vlasnika datoteke u grupi, to je hosting račun.
  • Druga se skupina sastoji od svih drugih aspekata na poslužitelju.
  • Čitanje - omogućuje korisnicima da čitaju i razumiju podatke navedene u datoteci.
  • Dozvola za pisanje - pisanje dopušta korisnicima da dešifriraju i napišu novi datum, izbrišu stare podatke iz arhive.
  • Izvrši - dopuštenje za izvršavanje, omogućit će slanje datoteke samo ako se izvrši program ili Upload CGI exe skripta. Potvrda da će skripta raditi prije veze u javnom načinu.
  • Primjer primjene aplikacije

    CGI - Program pojednostavljuje stvaranje složenih, visokih performansi, višestrukih web aplikacija, projektiranje, pisanje i razvoj web projekata. To inteligentno koristi korištenje modernih tehnologija i metoda koje programer veže s bilo kojim skupom operacijskih sustava ili poslužiteljskih alata.
    Ima malu težinu (u smislu korištenja memorije), što ga čini pogodnim za uobičajena CGI okruženja i visoke performanse u trajnim okruženjima kao što su FastCGI ili mod_perl. Dodavanjem dodataka PLUGINS kako rastu vaše potrebe, možete koristiti sofisticirane značajke kada je to potrebno, na primjer, morate napisati aplikaciju za pretraživanje u bazi podataka widgeta. Primjer skripta je ono što korisnik zapravo zove web poslužitelj. Ovo je vrlo mala jednostavna datoteka koja jednostavno stvara instancu programskog sučelja i poziva naslijeđenu run () metodu. U nastavku je potpuni opis "widgetview.cgi": #! /Usr /bin /perl -wuse WidgetView my $ webapp = WidgetView- & gt; new () $ webapp- & gt; Modul koji implementira paketPerl se zove WidgetView.pm. CGI Aplikacija vodi brigu o implementaciji novih () i run () metoda. U tom slučaju, korisnik nikada ne smije pozvati print () za slanje rezultata u STDOUT. Umjesto toga, cijeli izlaz se vraća kao skalar.
    CGI je najznačajniji doprinos upravljanju stanjem aplikacije. Sve što je potrebno za napredovanje programa je postavljanje vrijednosti parametra HTML obrasca "rm" na vrijednost načina izvođenja, koja se obrađuje slanjem obrasca. To je ključ CGI aplikacije.

    Metode pisanja skripti

    Korištenjem CGI aplikacije korisnik pristupa brojnim ugrađenim metodama. U nastavku su navedeni oni koji se pozivaju iz skripte. Metoda new () je konstruktor za CGI. Vraća vezu na aplikacijski paket (klasa). Može prihvatiti skup parametara kao parove: key = & gt; vrijednost.
    Ova metoda može imati neke specifične parametre:
  • TMPL_PATH - Definira putanju do predloška.
  • QUERY - omogućuje vam da navedete već kreirani objekt zahtjeva CGI.pm.
  • PARAMS - ovaj parametar vam omogućuje da postavite broj prilagodljivih načina tijekom izvođenja. Prolaskom različitih vrijednosti u različitim skriptama instanci koje koriste isti programski modul, možete postići višu razinu ponovnog korištenja.
  • Run () je pozvan u objekt aplikacijskog modula iz skripte. Prilikom pozivanja izvršava funkcionalnost sučelja aplikacijskog modula.

    Ova metoda najprije definira stanje aplikacije promatrajući vrijednost parametra CGI određenog parametrom mode_param (). Prema zadanim postavkama "rm" za "Run Mode", koji će sadržavati naziv načina rada. akoovo nije specificirano, zadano stanje je jednako vrijednosti start_mode (). Jednom kada je način naveden, run () pregledava tablicu slanja spremljenu u run_modes () i pronalazi pokazivač funkcije koji se unosi iz naziva moda. Ako je pronađena, funkcija se poziva, a vraćeni podaci print () se šalju u STDOUT iu pregledniku. Ako navedeni način nije pronađen u tablici run_modes (), run () croak ().

    PSGI podrška

    Aplikacija nudi ugrađenu podršku za PSGI. Zadani objekt za ovo je: psgi_app () $ psgi_coderef = WebApp-> psgi_app ({args to new ()}) Najlakši način je kreiranje i vraćanje PSGI-kompatibilnog koda. Argumente morate proslijediti hashref-u na isti način kao i novi. Ovo vraća PSGI-kompatibilan kod pomoću CGI ::: PSGI kao objekta upita. Da biste upotrijebili drugi objekt upita, stvorite vlastiti objekt run_as_psgi () na sljedeći način: run_as_psgi () moj $ psgi_aref = $ webapp- & gt; , zahtijevana PSGI specifikacijom. Upotrijebite ovo ako želite pokrenuti aplikaciju preko rukovatelja koji podržava PSGI, kao što je Plack. Krajnji rezultat može izgledati ovako:
    PSGI specifikacija može vratiti deskriptor datoteka ili potprograma umjesto bajtnih nizova. U PSGI načinu rada podržava ga izravno CGI aplikacija.

    Metode mogućeg nadjačavanja

    CGI implementira neke od metoda za koje se očekuje da će biti redefinirane uvođenjem u modul potklase. Ove metode su sljedeće:
  • Postavljanje (). Ovu metodu zove naslijeđena metoda konstruktora new ().
  • Metoda setup () trebala bi se koristiti za definiranje sljedećeg svojstva metoda.
  • Metoda setup () može pozvati bilo koju instancu prilagođene instance aplikacije. Ta je značajka dobro mjesto za određivanje svojstava specifičnih za program pomoću usluge $ webapp- & gt; param () Metoda setup () može se implementirati kao slika ispod:
    Međutim, često sve što bi trebalo biti u setup () definira AutoRunmode pokretanje načina, što vam omogućuje da to učinite s jednostavnom sintaksu koristeći startup atribute. Metoda razaranja (). Ako se implementira, automatski se naziva nakon stvaranja CGI skripti i pokretanja programa. Može se koristiti za čišćenje nakon operacija. Tipična uporaba funkcije teardown () je onemogućiti vezu s bazom podataka koja je postavljena u opciji setup (). Također možete koristiti metodu teardown () za spremanje informacija o statusu na strani poslužitelja: cgiapp_init ().

    Slanje praznog URI-ja za pokretanje načina

    Moderni web-preglednici idu bez ograničenja na URI, pružajući umjesto toga čist URI: /cgi-bin/item.cgi?rm=view&id=15 Čisti URI za opisivanje jednog i isti resurs može biti: /item /15 /view. Proces mapiranja tih URI-ova u modove izvođenja naziva se dispečing i njime upravlja CGI :: Application :: Dispatch. Nije potreban dodatni upravitelj. Možete raditi na CGI :: Aplikaciji na stolnom ili prijenosnom računalu bez instaliranja potpuno opremljenog web poslužitelja, kao što je Apache. Umjesto toga, instalirajte CGI :: Application :: Server s CPAN-om. Nakon instalacije, korisnik će biti nakon nekoliko minutavlastitog aplikacijskog poslužitelja. Provedite automatsko testiranje. Test :: WWW :: Mechanize :: CGIApp vam omogućuje izvođenje funkcionalnog testiranja CGI :: App bez pokretanja web poslužitelja. Test :: WWW :: Mechanize se može koristiti za provjeru valjanosti programa putem ovog web poslužitelja. Izravno testiranje je također jednostavno. CGI - Program obično ispisuje izlazne podatke svojih načina rada u STDOUT. To se može suzbiti pomoću varijable okruženja CGI_APP_RETURN_ONLY. Aplikacija ima plug-in arhitekturu koja je jednostavna za korištenje i razvija nove dodatke.

    CGI sučelje sadržaja

    To je bio prvi skup specifikacija za razvoj dinamičkog sadržaja na web poslužitelju. CGI sadržaj isporučen korisnicima nije statički HTML kod koji se čita iz datoteke na poslužitelju. To je dinamički sadržaj stvoren u skripti koja može izdvojiti informacije iz baze podataka, prilagoditi sadržaj tipu preglednika, traži, je li to novi korisnik ili ne. PHP je jezik posebno dizajniran za implementaciju dinamičkog sadržaja na web poslužiteljima. To olakšava razvoj CGI skripti u PHP-u nego na drugim jezicima. Kada poslužitelj počne izvršavati, on pruža sve kontekstualne informacije koje su mu potrebne:
  • pune informacije o upitu, uključujući ime /IP udaljenog računala, traženi URL i njegove argumente, niz upita (ako postoji).
  • Kolačići vezani uz zahtjev.
  • U slučaju POST zahtjeva, kao rezultat slanja web obrazaca, imena i vrijednosti parametara.
  • Osnovni primjer PHP skripte

    Skripta mora izvršiti proces i zatim prikazati valjani HTML kod uključujućiHTTP zaglavlja. Primjer PHP skripte:
    U ovoj skripti, prvi i zadnji red su HTML, a PHP ponude se nalaze u oznakama, a zatim dobivaju skriptu iz preglednika, dodajući niz upita iz dva argumenta, data1 i data2. Osim globalne varijable $ _SERVER, u skripti su dostupni sljedeći asocijativni nizovi pokretanja CGI skripti:
  • $ _GET - imena i vrijednosti argumenata proslijeđenih poslužitelju za GET zahtjev.
  • $ _POST - imena i vrijednosti parametara poslanih poslužitelju u POST zahtjevu, prilikom slanja obrasca.
  • $ _COOKIE - Imena i vrijednosti kolačića pridruženih zahtjevu.
  • $ _REQUEST - sve stavke u $ _GET, $ _POST i $ _COOKIEnpm za pokretanje php skripti iz nodejs preko cgi. Ovaj modul je dizajniran za deskshell kako bi osigurao nesmetanu obradu php skripti.
  • S obzirom da programer prima zahtjev u nodejs i ima objekt zahtjeva koji se zove req, a objekt zove, res, on mora koristiti ovaj modul kako slijedi:
    Stoga će zahtjev za /test.php odgovarati php modulu za CGI skripte. Funkcija paramsForRequest čita objekt upita i postavlja ispravne cgi varijable okoline za upit. To se daje kao zasebna funkcija, pa ako je potrebno, možete dodati dodatne varijable upita. Funkcija detectBinary u Windowsima traži dodatni modul stranice php-bin-win32 ", koji pruža prijenosnu php datoteku. Ovaj kod radi za deskshell, i ako je potrebno koristiti ga za bilo koju drugu svrhu i dodatne funkcije.

    Prvi program

    Za pisanje jednostavnog CGI programa u Perlu, slijedeći tradiciju, upotrijebite izraz "hello world". Evo jeu cijelosti. Spremite ga u datoteku pod nazivom hello u cgi-bin direktoriju i pokrenite je s URL-om: localhost /cgi-bin /hello u pregledniku. Korisnik bi trebao vidjeti tekst "Pozdrav svijetu" u pregledniku. Ako to nije slučaj, pogledajte odjeljak boxout za otklanjanje pogrešaka u CGI programima kako biste lakše riješili probleme. Ovo je jednostavan program. Postoji samo nekoliko točaka koje razlikuju razvoj CGI skripti na Perlu od standardnog programa koji se pokreće iz naredbenog retka. Prva je opcija -T na liniji shebang. To prevodi Perl u "taint" način. U ovom načinu rada Perl će automatski zanemariti sve podatke koji dolaze od korisnika i neće dopustiti prijenos tih podataka u operacijski sustav dok se ne izbrišu. U tom smislu, varijanta je dobra ideja. Druga razlika je dodavanje retka koji ispisuje zaglavlje sadržaja. To će biti prvi uzorak korisnika s CGI protokolom. Svi CGI programi moraju ispisati skup zaglavlja u korisnikov preglednik. U većini slučajeva, samo zaglavlje koje se vraća je sadržaj. To govori pregledniku koje podatke šalje program. Ovaj primjer vraća običan tekst, tako da je tip sadržaja "text /plain". Obično se vraća HTML, pa će vrsta sadržaja biti "text /html". Nema razloga zašto program ne može vratiti složenije podatke, kao što je PNG ("image /png"). Skup zaglavlja treba odvojiti od stvarnih podataka praznim retkom. To se postiže ispisivanjem dva znaka novog retka nakon završetka zaglavlja CGI skripte na poslužitelju.izlaz u STDOUT. Web poslužitelj će biti organiziran tako da prikuplja sve podatke snimljene u STDOUT i da ih vrati u preglednik. Prethodni primjer zapravo nije ništa učinio. Nema potrebe za CGI programom koji prikazuje samo fiksni tekst. To se lako može učiniti pomoću HTML stranice. Korisnik mora naučiti iz primjera onoga što ima dinamički izlaz. Na primjer, skripta koja ispisuje trenutno vrijeme:
    Ova skripta radi na istom principu kao i posljednja, ali daje sustavu vrijeme koristeći funkciju razvoja CGI skripti na Perl - "localtime" i ispisuje vrijednost. Svaki put kada se skripta ponovno učita, vrijeme će se ažurirati. Još jednom, ova skripta prikazuje običan tekst. Morate razmotriti verziju koja vraća HTML:
    Ovaj program izgleda pomalo kompliciranije, ali zapravo radi isto kao iu prethodnom primjeru. Dodana složenost proizlazi iz činjenice da bi trebali prikazati cijelu HTML stranicu. Ako je korisnik ikada pregledao postavke vašeg preglednika, vjerojatno je da su vidjeli potvrdne okvire ili prekidače kako bi omogućili ili onemogućili javascript i java, ali ih nikada ne vide za CGI ili PHP. To je zato što se JavaScript i Java izvršavaju u pregledniku (ili ne, ako ih korisnik isključi). Preglednik ne zna ništa o CGI-u ili PHP-u. Jednostavno dobiva čist HTML kod nakon izvršavanja skripti na poslužitelju. Ugrađena metoda za kreiranje CGI PHP skripti, ColdFusion, ASP se uglavnom koristi od strane programera, stvara prednje web stranice koje će pristupiti unatrag bazama podataka, na primjer.web-aplikacije klijent /poslužitelj. Velika prednost CGI metode je u tome što su skripte pohranjene u datotekama, tako da postoje doslovno tisuće slobodno dostupnih skripti koje su već napisane i spremne za preuzimanje i korištenje na web-mjestu. To znači da ne morate učiti skriptni jezik da biste dobili prednosti skripti koje su već obavile ovaj posao.

    Povezane publikacije