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.]