SERVER SIDE ELABORATION by Guido Boella - PowerPoint PPT Presentation

About This Presentation
Title:

SERVER SIDE ELABORATION by Guido Boella

Description:

Servlet ADO. SSI Javascript. VBscript PHP4 XSL. Mettiamo un po' di ordine in queste sigle ... Consente facile collegamento con ADO ... – PowerPoint PPT presentation

Number of Views:101
Avg rating:3.0/5.0
Slides: 36
Provided by: proflesmo
Category:

less

Transcript and Presenter's Notes

Title: SERVER SIDE ELABORATION by Guido Boella


1
SERVER SIDE ELABORATIONby Guido Boella
  • CGI ASP
  • PHP3 Perl
  • Servlet ADO
  • SSI Javascript
  • VBscript PHP4 XSL
  • Mettiamo un po' di ordine in queste sigle

2
Molte sigle
  • CGI common gateway interface
  • ASP active server pages
  • PHP personal home page (tools)
  • SSI server side includes
  • Perl practical extraction and reporting language
  • VBscript visual basic script

3
Pagine attive
  • La pagina .html ricevuta dal client non
    necessariamente costruita in anticipo e
    conservata sul disco
  • Esigenza di pagine personalizzate
  • Generazione di pagine da database
  • Acquisizione dei dati inviati dall'utente

4
(No Transcript)
5
(No Transcript)
6
CGI
  • Il server riceve una richiesta dal client che
    riguarda una pagina in una directory particolare
    ad es. http//www.di.unito.it/cgi-bin/date.sh
  • La pagina (date.sh) contiene un programma in un
    qualche linguaggio
  • Il server fa eseguire il programma
    (dall'interprete apposito)

7
  • Il programma genera in output un testo in formato
    html
  • Il server invia il testo come risposta al
    clientIn più
  • Il client può richiedere una pagina inviando
    assieme dei parametri
  • Il server invia i parametri come input del
    programma
  • Il programma spacchetta i parametri e li elabora

8
In particolare, CGI
  • Il programma è eseguito al di fuori del processo
    del server OS fa un context switch
  • La pagina richiesta deve essere composta
    interamente da un programma
  • Il programma deve generare tutto il documento
    html da lthtmlgt...ltbodygt alla fine lt/bodygtlt/htmlgt

9
Linguaggi per CGI
  • Qualsiasi linguaggio ma in particolare
  • Perl
  • Shell di Unix
  • Il programma è eseguibile indipendentemente dal
    server
  • Output va inviato su stout (standard output)

10
Esempio
  • ltA href"http//www/cgi-bin/date.sh"gt Prova un
    esempiolt/Agt
  • !/usr/bin/shecho "lthtmlgtltbodygtltbgt"dateecho
    "lt/bgtlt/bodygtlt/htmlgt"
  • lthtmlgtltbodygtltbgt10 Marzo 2000lt/bgt lt/bodygtlt/htmlgt

11
Dati in input
  • Due modi per inviare input
  • GET inserisce i dati come parte dell'URL
  • POST i dati sono inviati come standard input per
    il programma
  • La FORM del file html specifica quale formato
    usare

12
GET
  • E' possibile inviare solo una piccola quantità di
    dati
  • I dati restano visibili nel file di log del
    server!
  • Non serve un tag form
  • Il server inserisce i dati in una variabile di
    ambiente a disposizione del programmaENV'QUERY
    -STRING'

13
Invio dati con GET
  • ltform action"env.cgi" method"GET"gt Enter some
    text here ltinput type"text" name"sample_text"
    size30gtltinput type"text" name"other_text"
    size30gtltinput type"submit"gtltpgtlt/formgt
  • env.cgi?sample_textwhateveryoutypedother_text
    etcetc

14
Decodifica dati con GET
  • _at_values split(//,ENV'QUERY_STRING')
  • foreach i (_at_values)
  • (varname, mydata) split(//,i)
  • print "varname mydata\n"

15
POST
  • E' possibile inviare grandi dati
  • I dati non restano visibili nel file di log del
    server
  • Serve un tag form
  • Il server inserisce i dati nel body della risposta

16
Invio dati con POST
  • ltform action"env.cgi" method"POST"gt Enter some
    text here ltinput type"text" name"sample_text"
    size30gtltinput type"text" name"other_text"
    size30gtltinput type"submit"gtltpgtlt/formgt

17
Decodifica dati con POST
  • read(STDIN, buffer, ENV'CONTENT_LENGTH')
  • _at_pairs split(//, buffer)
  • foreach pair (_at_pairs)
  • (name, value) split(//, pair)
  • value tr// /
  • FORMname value

18
Pillole di Perl
  • Linguaggio interpretato 'simile' al C
  • Permette operazioni di manipolazione testo e di
    IO su disco
  • Programmi iniziano con ! /usr/bin/perl
  • Header per http print "Content-typetext/html\n\
    n"

19
Printing
  • Due tecniche
  • Ogni linea una printprint "lthtmlgtltheadgtlt/headgtltbo
    dygt"print "Ciao" print id
  • Blocco senza quotationprint ltlt
    mylabellthtmlgtltheadgtltbodygt idmylabel

20
IO
  • Apertura file
  • open(INF,"mydata.txt") read
  • open(OUTF,"gtoutdata.txt")overwrite
  • open(OUTF,"gtgtoutdata.txt") append
  • Scrittura su file
  • print OUTF "ENV'REMOTE_ADDR'\n"
  • close(OUTF)

21
  • Lettura da file
  • open(INF,"survey.out") or dienice("Can't open
    survey.out !")
  • a ltINFgt legge una riga
  • _at_b ltINFgt legge il resto del file in un
    array
  • close(INF)
  • Lockingflock(OUTF,2)
  • seek(OUTF,0,2)

22
ESEMPIO
  • lthtmlgtltBodygtlth2gtSurveylt/h2gt
  • ltform action"cgi-bin/survey.cgi" method"POST"gt
  • Enter your name ltinput type"text" name"name"
    size30gt
  • How would you rate the content of this site?ltbrgt
  • Poor ltinput type"radio" name"rating" value1gt 1
  • Goodltinput type"radio" name"rating" value2gt 2
  • Are you ltinput type"checkbox" name"des"
    value1gt Website Designerltbrgt
  • ltinput type"checkbox" name"svr" value1gt Web
    Server Admin
  • ltinput type"submit"gtlt/formgtlt/bodygtlt/htmlgt

23
survey.cgi
  • ! /usr/bin/perl
  • print "Content-typetext/html\n\n"
  • read(STDIN, buffer, ENV'CONTENT_LENGTH')
  • _at_pairs split(//, buffer)
  • foreach pair (_at_pairs) (name, value)
    split(//, pair)
  • value tr// / FORMname value
  • open(OUTF,"gtgtsurvey.out") flock(OUTF,2)seek(OUTF
    ,0,2)
  • print OUTF "FORM'name'FORM'rating'"
  • foreach key(keys boxes)if (FORMkey1)
    print OUTF "key,"
  • close(OUTF )
  • print "lthtmlgtltbodygtlth2gtThank You!lt/h2gtlt /bodygt
    lt/htmlgt"

24
summary.cgi
  • !/usr/bin/perl
  • open(INF,"survey.out") _at_data ltINFgt
    close(INF)
  • count 0 ratings 0
  • foreach i (_at_data) chomp(i)
  • (name,email,rating,boxes)
    split(/\/,i)
  • count ratings ratings
    rating_at_invlist split(/,/,boxes)
  • foreach j (_at_invlist) involvedj
    end foreach
  • avg_rating int(ratings / count)
  • print ltltEndHTML
  • lthtmlgtltheadgtlttitlegtSurvey Resultslt/titlegtlt/headgtltb
    odygt
  • Total visitors countltpgtAverage rating
    avg_ratingltpgt
  • Involvement in ltbrgtltulgtltligtWebsite Design
    involved'des'
  • ... EndHTML

25
Passaggio di valori al client!
  • Se i dati inviati con la form servono come valori
    di variabili javascript
  • La CGI crea del codice javascript e lo rimanda al
    client
  • Oppure dati presi da database vengono inviati al
    client come un programma javascript

26
Servlet
  • Simile a CGI ma usa linguaggio java
  • Plug-in per i principali server
  • Una servlet gira all'interno del server
  • (al contrario una applet gira sul client)

27
ASP
  • ASP solo per IIS di Microsoft
  • Consente facile collegamento con ADO
  • Il server riceve una richiesta dal client che
    riguarda una pagina .asp http//www.di.unito.it/da
    te.asp
  • La pagina (date.asp) contiene un documento html
    mescolato con del codice (VBscript, javascript)

28
  • Prima di inviare il documento, il server esegue
    lui stesso le parti di programma in un tread
    interno
  • Il codice genera in output parte del documento
  • Parametri ed output gestiti come oggetti da
    VBscript
  • Introduce il concetto di sessione (ma utilizza
    comunque i cookies)

29
  • lt queryRequest.QueryString()
  • namequery("name")gt
  • lthtmlgtltbodygtL'indirizzo di
  • ltbgtltnamegtlt/bgt
  • lt Set connServer.CreateObject("ADODB.Connection"
    )
  • conn.open("indirizzi")
  • sql"SELECT member WHERE member.id" name
  • Set valconn.execute(sql) gt
  • e' ltval("address") gt
  • lt/bodygtlt/htmlgt

30
(No Transcript)
31
PHP
  • Come ASP direttive all'interno di una pagina
    html
  • Direttive eseguite da server nel suo spazio di
    memoria
  • Ma non e' Microsoft gira sui principali server
    tramite plug-in
  • Comandi dedicati ad interazione con database reali

32
  • Sintassi è incrocio fra Perl e Java
  • Permette definizione classi e ereditarieta'
  • Esempiolthtmlgtltbodygt
  • lt? echo("sono php3") gt
  • lt?php if (name"io") then echo("pagina
    richiesta da" name) gt
  • lt/htmlgt

33
Server side includes
  • Direttive all'interno di una pagina (come ASP)
  • Il server esegue le direttive e inserisce il
    testo prodotto all'interno della pagina
  • Serve per fare header e footer standard per un
    sito (include di un file)
  • Oppure stampare dati del file che sono in
    variabili di ambiente

34
Esempi di SSI
  • lthtmlgtltbodygt
  • lt!-- include file"header.txt"--gt
  • lt!-- exec cgi"cgi-bin/program.pl" --gt
  • lta href"lt!-- echo var"HTTP-REFERER"--gt"gt
  • BACK TO PREVIOUS PAGElt/agtltpgt
  • lt!-- echo var"DATE_LOCAL"--gt
  • lt!-- include file"footer.txt"--gt
  • lt/htmlgt

35
Fine
Write a Comment
User Comments (0)
About PowerShow.com