Posted By: Wendigo (...konec, smytec.) on 'CZscripts'
Title:     Co je to vlastne CGI script. (co si pamatuju z Brendyho SPS;) )
Date:      Fri Mar 12 15:04:28 1999


Hmm. Tohle sem pisu sokovano neznalosti jistych existenci, ktere se snazi psat 
CGI scripty. :) Pokud jste s principem fungovani CGI srozumeni, stisknete 'q'.

Nasledujici text vychazi z mych chabych vzpominek na prednasky o Sluzbach poc. 
siti, a popisuje zejmena implementaci na ruznych UNIXech.

JAK VLASTNE FUNGUJE WWW?

WWW server je v podstate specificky daemon. Proces, ktery standartne 
obsluhuje port 80 urciteho stroje.
  Ackoli se ke komunikaci s WWWserverem pouziva obvykle ruznych browseru (NN, 
IE, Lynx), lze jej s uspechem skadlit i normalnim telnetem. To ovsem vyzaduje 
znalost HTTP protokolu. 
  Jak takova komunikace vypada? Jelikoz si to uz prilis nepamatuji a hledat se 
mi to nechce, naznacim pouze schematicky:
WWW serveru posilam request, kde urcuji jakou sluzbu zadam a jeji specifikace. 
Tech muze byt slusna hromada a cely request ukoncuji prazdnym radkem.
Pr:

>telnet www 80                 // Telnetim se na www server '>'oznacuje vstup
Connected blablabla...
>get / HTTP/1.0                // Jakou sluzbu chci, ktery adresar, jake HTTP
>Accept: text/html             // specifikace (jsou nepovinne)
>User-Agent: Mozila/XX         // ---"---
>                              // prazdny radek ukoncujici rerquest
HTTP blabla...                 // A to uz mi odpovida WWW server
Date: ....
Server: Apache/XX
Context-type: text/html        // typ dat - diky nemu se browser dozvi, jak to 
Context-length: ??             // interpretovat
                               // prazdny radek - konec hlavicky
<HTML>                         // A tady nasleduje dokument...
<HEAD
<TITLE>Necum, vole!</title>
atd.....

Krome sluzby GET existuji i sluzby POST (-umozni poslat data) a HEAD (vrati 
pouze hlavicku dokumentu) Nebudu to rozpitvavat...
 
A timhle zpusobem se s WWW serverem bavi i  browser, ale pripojuje se sam a ne 
prez telnet. :) (ikdyz uz me samozrejme napadlo, udelat si klienta, co se prez 
ten telnet pripojovat bude, abych nemuselo studovat TCP/IP ;) Proste prulom ve 
Wendigovo stylu) 


CO JE TO CGI SCRIPT? 

 Jednoduse a proste: CGI script je program, ktery muze byt interpretovan
systemem na kterem WWW server sidli, a ktery posila na standartni vystup 
nejaka smysluplna data, napr HTML kod.
  Muze to byt binarka, stejne jako script v shellu, nebo perlu, nebo v 
cemkoli, co je implementovano.  Jak funguje? Script v podstate prevezme fci 
WWW serveru a vyda data misto nej. Tady je dulezite znat princip komunikace, 
abychom vedeli, jakym zpusobem za WWW server odpovidat. Ano, proto se napr v 
BASHovskem scriptu pise ono magicke: 

echo "Context-type: text/html"
echo ""

To je minimalni hlavicka uvozujici dokument, kterou jinak generuje WWW server. 
  Vsechno, co ve scriptu poslem na standartni vystup, posilame vlastne 
klientovi (browseru). Pokud nastavime spravny context-type, muzem klidne 
poslat na stdout binarni data a klient je interpretuje jako gif... 
  Obvykle ale chceme, aby to generovalo HTML, takze to vypada asi takhle:
Pr:
#!/bin/bash

echo "Context-type: text/html"
echo ""
echo "<html>"
echo "<head><title>pokusny cgi</title></head>"
echo "<body>"
echo "Zdar"
echo "</body>"
echo "</html>"


A to je asi tak vsechno.
(Disclamer: Je to opravdu jen ZAKLADNI INFO, navic zrejme zatizene nejakymi 
temi chybami...) 


Myslim, ze Brendy ma na pagi kompletni blany od SPS, takze pokud se tim chcete 
zabyvat seriozne, tak tusim viz. www.fi.muni.cz/usr/brandejs. Kdeze by me 
napadlo, ze mu budu nekdy delat reklamu. :( 
Jo, a SPS se vypisuji v zimnim semestru... :)

   //endigo   [ToZeSemSePodepsaloJesteNeznamenaZeSeZaSvyNazoryNestydim.]



  

Search the boards