Web-fejlesztés NGM_IN002_1
CGI, SSI
Dinamikus tartalom el!állítás Webes prezentáció és átvitel HTML, (MIME), HTTP Megvalósítás Alkalmazás natív webes interfésszel Standard webszerver funkcionalitásának kiterjesztése
Webes interfész Humán interfész böngész!, HTML Nehézségek tartalom <-> megjelenítés teljesítmény => használjunk önálló webréteget
Common Gateway Interface
• Interfész specifikáció a webszerver és az általa elindított alkalmazás adat cseréjére Database
Browser
field
Text Field
field
request
Text Field
OK
receive
SQL CGI program web gateway
Webserver
Cancel
result
process response
Browser
HTTP
CGI
Egyéb interfészek
CGI alkalmazások "rlapok (forms) feldolgozása interakció Gateway funkciók webes interfész Virtuális dokumentumok dinamikus tartalom
A CGI m#ködése HTTP kérés a webszerverhez GET, POST CGI élet ciklus (single request) új process létrehozása a CGI számára a kérés paramétereinek elérhet!vé tétele a CGI program számára szerver és op. rendszer függ! stdio, környezeti változók, stb. válasz visszaadása
CGI programozási környezetek A script nyelvek megfelel!ek CGI-k írására jó szöveg manipulációs képességek együttm#ködés más programokkal CGI környezet elérése hordozhatóság de teljesítménykorlátok Szokásos CGI környezetek Shell scriptek (UNIX) Perl (UNIX, Mac OS, Windows) C Példa
Az interfész Environment Variable
Description
GATEWAY_INTERFACE
The revision of the Common Gateway Interface that the server uses.
SERVER_NAME
The server's hostname or IP address.
SERVER_SOFTWARE
The name and version of the server software that is answering the client request.
SERVER_PROTOCOL
The name and revision of the information protocol the request came in with.
SERVER_PORT
The port number of the host on which the server is running.
REQUEST_METHOD
The method with which the information request was issued.
PATH_INFO
Extra path information passed to a CGI program.
PATH_TRANSLATED
The translated version of the path given by the variable PATH_INFO.
SCRIPT_NAME
The virtual path (e.g., /cgi-bin/program.pl) of the script being executed.
DOCUMENT_ROOT
The directory from which Web documents are served.
QUERY_STRING
The query information passed to the program. It is appended to the URL with a "?".
REMOTE_HOST
The remote hostname of the user making the request.
REMOTE_ADDR
The remote IP address of the user making the request.
AUTH_TYPE
The authentication method used to validate a user.
REMOTE_USER
The authenticated name of the user.
REMOTE_IDENT
The user making the request.
CONTENT_TYPE
The MIME type of the query data, such as "text/html".
CONTENT_LENGTH
The length of the data (in bytes or the number of characters) passed to the CGI program through standard input.
HTTP_FROM
The email address of the user making the request. Most browsers do not support this variable.
HTTP_ACCEPT
A list of the MIME types that the client can accept.
HTTP_USER_AGENT
The browser the client is using to issue the request.
HTTP_REFERER
The URL of the document that the client points to before accessing the CGI program.
Példa
Formok feldolgozása GET POST URL-encoded Content-Type: application/x-www-form-urlencoded HTTP kérés feldolgozása CGI felismerése elérési könyvtár meghatározása végrehajtási jog ellen!rzése a könyvtárra fájlrendszer végrehajtási jogok ellen!rzése (UNIX) környezeti változók beállítása process indítás CGI program kilépése után a tartalom kiszolgálás, a fejléc mez!k kiegészítése Példa
Form adatok elérése Query string URL (GET) QUERY_STRING környezeti vált. Üzenet testben (POST) stdin CONTENT_LENGTH REQUEST_METHOD parszer kell form mez!k URL encoded data key-value pairs & mez! szeparátor speciális karakterek
Példa
A CGI program válasza Fejléc mez!k Header
Description
Content-length
The length (in bytes) of the output stream. Implies binary data.
Content-type
The MIME content type of the output stream.
Expires
Date and time when the document is no longer valid and should be reloaded by the browser.
Location
Server redirection (cannot be sent as part of a complete header).
Pragma
Turns document caching on and off.
Status
Status of the request (cannot be sent as part of a complete header).
Refresh
Client reloads specified document.
Set-Cookie
Client stores specified data. Useful for keeping track of data between requests.
Multimédia tartalom CGI visszatérési értéke multimédia tartalom formátum segéd könyvtárak pl. GD küls! alkalmazások gnuplot Példa
FastCGI Nyelvfüggetlen szerver kiterjesztés (modulok) CGI interfész processz-kezelési overhead elkerülése “hosszú élet#” alkalmazások konkurrens, eseményvezérelt, többszálú m#ködés listening socket
Server Side Include Korai HTML esetén nem volt mód küls! információ becsatolására csak img elemmel ágyazható be kliens oldalon tartalom Szerver által kiegészített html fájl html w/ssi Browser
field
Text Field
field
Text Field
OK
Webserver request Cancel
Browser
response
CGI program
SSI processing
virtual include
HTTP
SSI
SSI beágyazások Command echo
Parameter var
include
Description Inserts value of special SSI variables as well as other environment variables Inserts text of document into current file
file
Pathname relative to current directory
virtual
Virtual path to a document on the server
fsize
file
Inserts the size of a specified file
flastmod
file
Inserts the last modification date and time for a specified file Executes external programs and inserts output in current document
exec cmd
Any application on the host
cgi
CGI program
Példa
Egyszer# CGI-k #!/usr/bin/perl print "Content-type: text/html\n\n"; print "
Hello, World!
";
#!/usr/bin/perl use CGI qw(:all); # CGI.pm module is very useful! print header, start_html, h1("Hello, World!"), end_html;
Vissza
CGI környezeti változók #!/usr/bin/perl print "Content-type: text/html", "\n\n"; print "", "\n"; print "<TITLE>About this Server", "\n"; print "
About this Server
", "\n"; print "
"; print "Server Name: ", $ENV{'SERVER_NAME'}, "\n"; print "Running on Port: ", $ENV{'SERVER_PORT'}, "\n"; print "Server Software: ", $ENV{'SERVER_SOFTWARE'}, "\n"; print "Server Protocol: ", $ENV{'SERVER_PROTOCOL'}, "\n"; print "CGI Revision: ", $ENV{'GATEWAY_INTERFACE'}, "\n"; print "
", "\n"; print "", "\n";
Vissza
HTTP kérés és válasz 127.000.000.001.49284-127.000.000.001.00080: GET /cgi-bin/mult.cgi?m=5&n=7 HTTP/1.1 Host: 127.0.0.1 Connection: keep-alive Referer: http://127.0.0.1/~heckenasttamas/mult.html User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.5.6 (KHTML, like Gecko) Safari/125.12 If-Modified-Since: Sat, 26 Feb 2005 10:06:58 GMT Accept: */* Accept-Encoding: gzip, deflate;q=1.0, identity;q=0.5, *;q=0 Accept-Language: en, ja;q=0.82, hu;q=0.93, fr;q=0.89, ja-jp;q=0.86, hu-hu;q=0.96, de-de;q=0.79, de;q=0.75, nl-nl;q=0.71, nl;q=0.68, es;q=0.64, it-it;q=0.61, it;q=0.57, sv-se;q=0.54, sv;q=0.50, no-no;q=0.46, no;q=0.43, da-dk;q=0.39, da;q=0.36
127.000.000.001.00080-127.000.000.001.49284: HTTP/1.1 200 OK Date: Sat, 26 Feb 2005 10:11:57 GMT Server: Apache/1.3.33 (Darwin) Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html;charset=iso-8859-1 93 <TITLE>Multiplication results
Multiplication results
The product of 5 and 7 is 35. 0
Vissza
Form mez!k parszolása @key_value_pairs = split (/&/, $query_string); foreach $key_value (@key_value_pairs) { ($key, $value) = split (/=/, $key_value); $value =~ tr/+/ /; $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
Vissza
Grafikus tartalom #!/usr/local/bin/perl use GD; print "Content-type: image/png\n\n"; # create a new image $im = new GD::Image(100,100); # allocate some colors $white = $im->colorAllocate(255,255,255); $black = $im->colorAllocate(0,0,0); $red = $im->colorAllocate(255,0,0); $blue = $im->colorAllocate(0,0,255); # make the background transparent and interlaced $im->transparent($white); $im->interlaced('true'); # Put a black frame around the picture $im->rectangle(0,0,99,99,$black); # Draw a blue oval $im->arc(50,50,95,75,0,360,$blue); # And fill it with red $im->fill(50,50,$red); binmode STDOUT; # Convert the image to PNG and print it on standard output print $im->png;
Vissza
SSI ! ! ! ! ! ! !
!
SSI test
!
Vissza