AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito...

35
Agent and Object Technology Lab Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma AOT AOT LAB LAB Fondamenti di Informatica Fondamenti di Informatica Fondamenti di Informatica Fondamenti di Informatica Applicazioni web Michele Tomaiuolo

Transcript of AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito...

Page 1: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

Agent and Object Technology LabDipartimento di Ingegneria dell’Informazione

Università degli Studi di Parma

AOTAOTLABLAB

Fondamenti di InformaticaFondamenti di InformaticaFondamenti di InformaticaFondamenti di Informatica

Applicazioni web

Michele Tomaiuolo

Page 2: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

2

AOTAOTLABLAB

� Form e campi di input� Azione e metodo

� Coppie nome/valore

� Campi di input

� HTTP� Metodi, intestazioni e codici di stato

� Parametri e cookie

� Pagine web attive

Sommario

Page 3: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

3

AOTAOTLABLAB

� Un form html è una sezione di documento checontiene� Testo normale e markup

� Elementi speciali chiamati controlli (checkbox, bottoniradio, menu ecc.)

� Etichette per questi controlli

� Gli utenti di solito “completano” questi controlli

� Inserimento testo, selezione voci di menu ecc.

� Poi il form viene sottomesso

� Eleborazione remota su web server

FormIntroduzione

Page 4: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

4

AOTAOTLABLAB

� I form sono racchiusi dai tag <form> e </form>

� Il tag <form> ha

� Un attributo action – url a cui inviare i dati del form

� Un attributo method – metodo http da usare per sottomettere i dati del form (get o post in accordo alloscript sul server)

� <form action="http://www.myhost.com/myscript.cgi"

method="post">

FormAzione and metodo

Page 5: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

5

AOTAOTLABLAB

� Ogni campo di input in un form ha:� Un nome, definito dall’attributo name del tag <input>, <select>, o <textarea>

� Un valore, che l’utente imposta immettendo testo o clickando col mouse

� I dati del form vengono sottomessi allo script sulserver come un insieme di coppie nome/valore

� Campi di testo vuoti sono inviati come una coppianome/valore, in cui il valore è una stringa vuota

� Checkbox e pulsanti radio non selezionati non vengonoproprio inviati

FormCoppie nome/valore

Page 6: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

6

AOTAOTLABLAB

Form

Tag per i campi

� Ulteriori tag per definire campi di input

� Oltre a “normale” codice html

� <input> – Campi per l’immissione di testo,

checkbox, bottoni radio, o bottoni normali

� <select> – menu a discesa e box di selezione

� <textarea> – campi per limmissione di testo su

righe multiple

Page 7: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

7

AOTAOTLABLAB

� Il tag input crea la maggior parte dei campi nei form

� Insieme di attributi variabile a seconda dell’attributo type

� Valori possibili per type

� text – campo normale per l’immissione di testo (default)

� password – identico a text, ma nasconde il testo inserito

� checkbox – checkbox, per semplici valori on/off

� radio – pulsante radio, per scegliere una di diverse opzioni

� submit – bottone per inviare i dati del form, quando inseriti tutti

� reset – buttone che riporta tutti i campi al valore iniziale

� image - come submit, ma mostra una immagine come bottone

� hidden – per ulteriori coppie nome/valore da inviare al server, ma non visualizzate

FormsIl tag input

Page 8: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

8

AOTAOTLABLAB

� Attributi opzionali dei campi text e password� value – Valore di default per il campo� size – Dimensione visualizzata del campo� maxlength – Quantità di dati che si può inserire

� Attributi opzionali dei campi checkbox e radio� value – Valore che ha il campo quando è selezionato; default = "on"� checked – Se il campo per default è selezionato

� I campi submit e reset usano il valore (opz.) come etichetta

� Il campo image richiede un attributo src con la urldell’immagine da visualizzare� Supporta la maggior parte degli attributi del tag img

FormIl tag input

Page 9: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

9

AOTAOTLABLAB

<form action="http://myhost.com/myscript.cgi" method="post">

<br />State: <input type="text" name="state" value="IT" size="2"

maxlength="2" />

<br />Password: <input type="password" name="password" />

<br /><input type="checkbox" name="moreinfo" value="yes"

checked="checked" />Send me more info.

<br />Select your gender below:

<br /><input type="radio" name="gender" value="F" />Female

<br /><input type="radio" name="gender" value="M" />Male

<br /><input type="submit" name="okbutton" value="OK, submit!"

/>

<br />

<input type="reset" value="Whoops - erase that" />

<input type="image" src="hand.gif" />

<input type="hidden" name="totalsofar" value="1290.65" />

</form>

FormEsempio con tag input

Page 10: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

10

AOTAOTLABLAB

<form action="http://myhost.com/myscript.cgi" method="post"><br />State: <input type="text" name="state" value="IT" size="2"

maxlength="2" /><br />Password: <input type="password" name="password" /><br /><input type="checkbox" name="moreinfo" value="yes"

checked="checked" />Send me more info.<br />Select your gender below:<br /><input type="radio" name="gender" value="F" />Female<br /><input type="radio" name="gender" value="M" />Male<br /><input type="submit" name="okbutton" value="OK, submit!"

/><br /><input type="reset" value="Whoops - erase that" /><input type="image" src="hand.gif" /><input type="hidden" name="totalsofar" value="1290.65" /></form>

FormEsempio con tag input

Page 11: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

11

AOTAOTLABLAB

Choose your favorite color:

<select name="favcolor">

<option>green</option>

<option>aquamarine</option>

<option selected="selected">emerald</option>

<option>turquoise</option>

<option>aqua</option>

<option value="green2">green</option>

<option value="green3">green</option>

</select>

FormIl tag select

Page 12: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

12

AOTAOTLABLAB

� Il tag textarea crea aree per l’inserimento di testo su piùlinee, con barre di scorrimento

� Tutto ciò che si trova tra I tag di apertura e chiusuracostituisce il contenuto iniziale del campo

<textarea name="stuff" rows="5" cols="10">Enter stuff here</textarea>

FormIl tag textarea

Page 13: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

13

AOTAOTLABLAB

� Protocollo di livello applicazione per sistemi informatividistribuiti, collaborativi e ipertestuali

� Usato nel World-Wide Web fin dal 1990� Semplice & efficiente

� Flessibile per i dati, supportandone molti tipi

� Senza connessione: una richiesta per ogni connessione

� Senza stato: lo stato non è conservato tra connessioni diverse

� Descritto in RFC 2616 (HTTP/1.1)� Tipi di richiesta che un browser web può inviare

� Tipi di risposta che un web server può fornire� Usa TCP/IP, ma si presume solo un livello di trasporto affidabile� Porta di default = 80

HttpHyper Text Transfer Protocol

Page 14: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

14

AOTAOTLABLAB

� Http/0.9 – Prima versione del protocollo� Semplice protocollo per il trasferimento di dati grezzi su Internet

� Http/1.0 – Miglioramenti, definito in RFC 1945

� Messaggi in formato simile a quello Mime (e-mail)

� Meta-informazioni sui dati trasferiti

� Modificatori per il significato delle richeste/risposte

� Http/1.1 – Connessioni persistenti

� Una sola connessione per uno o più scambi richiesta/risposta

� Le connessioni possono essere chiuse per una serie di ragioni

HttpStoria

Page 15: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

15

AOTAOTLABLAB

� Http è un protocollo di tipo richiesta/risposta

� Un client invia una richiesta al server, specificando:� Metodo, url, versione del protocollo

� Segue un messaggio di tipo mime contenente:� Modificatori di richiesta

� Informazioni sul client

� Possibile corpo della richiesta (es. dati form)

� Il server invia in risposta una riga di stato, con:� Versione del protocollo, codice di successo o errore

� Segue un messaggio di tipo mime contenente:� Informazioni sul server

� Meta-informazioni sulla entità (doc o altra risorsa richiesta)

� Possibile corpo per contenuto dell’entità

HttpClient e server

Page 16: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

16

AOTAOTLABLAB

� Ogni messaggio http consiste di:� Una riga di apertura (start-line)

� Zero o più campi di intestazione (header)

� Una riga vuota che indica la fine dell’header

� Un possibile copro del messaggio (body)

� Campi header in formato generico RFC 822 (email)� general-, request-, response-, entity-header

� Corpo (se presente) per trasportare il contenuto dell’entità� Risorsa associata alla richiesta o risposta

generic-message: start-line

*(message-header CRLF)

CRLF

[message-body ]

start-line: Request-Line | Status-Line

HttpMessaggi

Page 17: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

17

AOTAOTLABLAB

� Il metodo get significa:

Recupera qualsiasi informazione (in forma di entità) sia identificata dall’url della richiesta

� Se la url indica un processo di produzione dati, questi datisono restituiti come corpo della risposta

� Semantica modificata in get condizionale se tra gli header:

� If-Modified-Since, If-Unmodified-Since, ...

� Per evitare spreco di risorse di rete

HttpMetodo get

Page 18: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

18

AOTAOTLABLAB

� Il metodo post copre diverse funzioni generali

� Annotazione di risorse esistenti

� Invio di messaggi a bulletin board, newsgroup, mailing list, o gruppidi articoli simili

� Aggiunta di dati ad un database

� Invio di un blocco di dati, come quelli presenti all’interno di un form, ad un processo che li gestisca

� La url di una richiesta post identifica la risorsa che gestiràl’entità acclusa� Processo che accetta dati

� Gateway per altri protocolli

� Entità separata che accetta annotazioni

HttpMetodo post

Page 19: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

19

AOTAOTLABLAB

1. Il browser apre una connessione al computer e alla portaspecificati nella url desiderata

2. Il browser trasmette la parola “GET” seguita da unospazio, un percorso per la risorsa, un ritorno a capo

� Es. comando per chiedere la home page del server:

� GET /

3. Il server risponde con una riga di stato, intestazioni varie, una riga vuota e il contenuto del file richiesto

4. Il server poi chiude la connessione

Per ricevere immagini, video ecc.il client deve aprire altre connessioni:

una per ogni oggetto necessario

HttpConnessioni usa-e-getta

Page 20: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

20

AOTAOTLABLAB

POST /beta.jsp HTTP/1.1

Referer: http://www.alpha.com/alpha.jsp (the address (URI) of

the resource from which the Request-URI was obtained)

Connection: Keep-Alive

User-Agent: Mozilla/4.61

Host: www.alpha.com:80

Cookie: name=value

Accept: image/gif, image/jpeg, */*

Accept-Language: en

If-modified-since: Mon, 10 Jul 2000 22:55:23 GMT

[blank line here]

selected-item=1234&action=show+details

GET /beta.jsp?selected-item=1234&action=show+details HTTP/1.1

Referer: http://www.alpha.com/alpha.jsp (the address (URI) of

the resource from which the Request-URI was obtained)

[...]

If-modified-since: Mon, 10 Jul 2000 22:55:23 GMT

[blank line here]

HttpEsempio di richiesta

Page 21: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

21

AOTAOTLABLAB

HTTP/1.1 200 OK

Date: Fri, 12 Nov 2001 11:46:53 GMT

Server: Apache/1.3.3 (Unix)

Last-Modified: Mon, 12 Jul 2000 22:55:23 GMT

Accept-Ranges: bytes

Content-Length: 234

Content-Type: text/html

<html>

<head><title>Beta page</title></head>

<body>

<h1>Beta page</h1>...

HttpEsempio di risposta

Page 22: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

22

AOTAOTLABLAB

� 1xx – Informational� Richiesta ricevuta, elaborazione in corso

� 2xx – Success

� Richiesta ricevuta, interpretata e accettata

� 3xx – Redirection

� Necessario intraprendere azioni ulteriori

� 4xx – Client Error

� Richiesta con sintassi scorretta o bloccata

� 400 – Richiesta scorretta; 401 – Non autorizzato; 402 – Richiestopagamento; 403 – Vietato; 404 – Non trovato

� 5xx - Server Error

� Il server non riesce a soddisfare una richiesta apparentemente valida

HttpCodici di stato

Page 23: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

23

AOTAOTLABLAB

I cookie sono meccanismo generale

per memorizzare e recuperare informazioni

sul lato client di una connessione http

1. Quando un server invia una risposta, può inviare ancheinformazione di stato da memorizzare sul client

� Specificato del range di url per cui lo stato è valido

� Può essere specificata una scadenza

2. Per ogni futura richiesta fatta dal client in quel range, saràritrasmessa al server anche l’informazione di stato

HttpCookie

Page 24: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

24

AOTAOTLABLAB

� Si può segnalare un cookie al client includendo un header Set-Cookie nella risposta http

� Set-Cookie: NAME=VALUE; expires=DATE;

path=PATH; domain=DOMAIN_NAME; secure

� Quando richiede una url, il browser la confrontacon tutti i cookie (con il rispettivo range di url)

� Per ciascun cookie che corrisponde, alla richiestahttp viene aggiunta una coppia chiave/valore

� Cookie: NAME1=VALUE1; NAME2=VALUE2 ...

HttpCookie

Page 25: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

25

AOTAOTLABLAB

� L’aggiunta di informazione di stato, semplice e persistente, sul lato client estende in modosignificativo le capacità di applicazioni web

� Semplice carrello per commercio elettronico:elenco prodotti selezionati memorizzato in cookie

� Spesso al client è inviato solo un session-id

� Usato dal server come chiave per trovare, in un repository locale, l’informazione di stato per il client

HttpCookie

Page 26: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

26

AOTAOTLABLAB

Php

Introduzione

� Php: Hypertext Preprocessor

� Linguaggio di scripting lato server, come asp e jsp

� I file php sono eseguiti sul server e poirestituiti al browser come semplice html

� Supporta molti database, spesso usato con Mysql

� Open source

http://php.net http://php.net/manual/it/

http://www.apachefriends.org/it/xampp.html

Page 27: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

27

AOTAOTLABLAB

Php

Hello world

� File php: normali tag html + codice di script

� I blocchi di script cominciano con <?php

� … e finiscono con ?>

<html>

<body>

<?php

echo "Hello world";

?>

</body>

</html>

Page 28: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

28

AOTAOTLABLAB

Php

Sintassi

� Php ha una sintassi assai simile al linguaggio C

� Operatori

� aritmetici, logici, di assegnamento, di confronto

� Istruzioni condizionali

� if… else, switch

� Istruzioni di ciclo

� while, do… while, for

Page 29: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

29

AOTAOTLABLAB

Php

Variabili

� Le variabili cominciano col simbolo $

� Le variabili non sono tipate

� Le variabili non devono essere dichiarate

� Le stringhe si concatenano con l’operatore .

<?php

$txt1 = "Hello ";

$txt2 = "world!";

$var = $txt1 . $txt2;

$number = 16;

$var = $number;

?>

Page 30: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

30

AOTAOTLABLAB

Php

Array

<?php

// array numerici

$names = array(“Pietro”,“Giovanni”,“Dario”);

$names[1] = “Gianni”;

$dario = $names[2];

// array associativi

$ages = array(“Zac”=>32,“Tom”=>28,“Rob”=>31);

$ages[“Gino”] = 24;

$eta_rob = $ages[“Rob”];

?>

Page 31: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

31

AOTAOTLABLAB

Php

Parametri della richiesta

<html>

<body>

<form action="welcome.php" method="get">Name: <input type="text" name="name" />

Age: <input type="text" name="age" />

<input type="submit" />

</form>

</body>

</html>

<html>

<body>

Benvenuto <?php echo $_GET["name"]; ?>.<br />

Hai <?php echo $_GET["age"]; ?> anni.</body>

</html>

Page 32: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

32

AOTAOTLABLAB

Php

Parametri della richiesta

� Si possono passare i parametri da url (metodo get)

� http://127.0.0.1/welcome.php?name=mic&age=33

� Se il metodo del form è post, allora si deve usare la varibile $_POST

� La variabile $_REQUEST include gli elementi di $_GET, $_POST, $_COOKIE

Page 33: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

33

AOTAOTLABLAB

Php

Connessione a database

<?php

$con = mysql_connect("localhost","peter","abc123");

if (!$con) {

die('Could not connect: ' . mysql_error());

}

mysql_select_db("my_db", $con);

// some code

mysql_close($con);

?>

Page 34: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

34

AOTAOTLABLAB

Php

Inserimento dati in database

<?php

$con = mysql_connect("localhost","peter","abc123");

if (!$con) {

die('Could not connect: '.mysql_error());

}

mysql_select_db("my_db", $con);

mysql_query("INSERT INTO person (FirstName,

LastName, Age) VALUES ('Peter', 'Griffin', '35')");

mysql_query("INSERT INTO person (FirstName,

LastName, Age) VALUES ('Glenn', 'Quagmire', '33')");

mysql_close($con);

?>

Page 35: AOT A O T Lab - unipr.it · 5 AOT LAB Ogni campo di input in un form ha: Un nome, definito dall’attributo name del tag , , o  Un valore,

35

AOTAOTLABLAB

Php

Lettura da database

<?php

$con = mysql_connect("localhost", "peter", "abc123");

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM person");

$data = "";

while($row = mysql_fetch_array($result)) {$data .= "<tr><td>" . $row['FirstName'] . "</td> .

"<td>" . $row['LastName'] . "</td></tr>";

}

mysql_close($con);

?>

<table border="1">

<tr><th>Firstname</th><th>Lastname</th></tr>

<?php echo $data ?>

</table>