52 – 53 DBMS 1
Dando per scontato che si possiedano le conoscenze base di mySQL e SQL, creare un database con mySQL chiamandolo quizMaker e magari anche un utente mySQL.
Aggiungere una tabella users con i campi :
iduser -> INT – primary key – not null – autoincrement
email -> VARCHAR45 – unique – not null
psw -> VARCHAR45 – not null
Creiamo il file html con il seguente form:
<html> <body style="background-color: lightgreen; "> <center> <h2> QUIZ MAKER LOGIN</h2></center> <form name="login" action="elogin2.php" method="GET"> <table> <tr> <td>Email: </td> <td><input type="email" name="email" value="" /></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="password" value="" autocomplete="off" /></td> </tr> </table> <input type="submit" value="ACCEDI" /> <input type="submit" value="NUOVO UTENTE" /> <input type="reset" /> </form> </body> </html>
Ricordando le cose saliente per la form: il name, nel caso abbia più forms, serve per contraddistinguere il nome della form dalla quale sto ricevendo i dati. La action è il nome della pagina che li riceve e li elabora. Il method specifica il metodo con il quale la form invia i dati.
Una particolare spiegazione in questo ambito, richiede il metodo:
il browser di navigazione ed il server web comunicano tramite il protocollo http, quando si digita un indirizzo sul browser, quest’ultima prepara una richiesta (HTTP request) con una certa formattazione e delle specifiche stabilite dal protocollo. Alcune di queste informazioni vengono messe delle testate (headers) e la prima cosa che viene specificata è il metodo di invio (GET /index.html HTTP/1.1) altre info possono essere lo user agent (il tipo di browser), il tipo di risorse che il browser può accettare (testo, immagini…). Poi potrebbe esserci una parte con info aggiuntive chiamata body. Col metodo GET normalmente il body non c’è. Il server elabora i dati e prepara una risposta (HTTP response) con diverse informazioni protocollo, data, tipo di server web… e anche i dati richiesti (la pagina richiesta). Con il metodo GET di una form i dati non vengono inseriti nell’header, ma vengono inseriti nell’url. Prepariamo una pagina elogin2.php con solo la struttura basica e vediamo il caso pratico di GET:
<html> <head></head> <title>ELOGIN</title> <?php ?> </html>
Questa è la parte finale della url una volta cliccato su accedi:
elogin1.php?email=info%40dueclic.com&password=pippo
La parte successiva alla pagina chiamata si chiama query string e è delimitata dal punto di domanda (?) che determina l’inizio della query string e delle variabili che prendono il nome dall’input della form (email e password)
<input type="email" name="email" value="" /> <input type="password" name="password" value="" autocomplete="off" />
e i valori delle 2 variabili che corrispondono ai valori inseriti nella form (%40 è la conversione esadecimale della @) separati dall’operatore and (&).
Se usiamo il metodo POST
<form name="login" action="elogin1.php" method="POST">
i dati non vengono passati all’url, ma vengono inseriti nel body della HTTP request e non visibili.
GET | POST |
Meno sicuro perchè i dati vengono passati in chiaro nell’url | Più sicuro, i dati non sono visibili nell’url |
Meno capiente i browsers supportano una lunghezza massima della query string, ma soprattuto il server web ha un limite | Teoricamente non vi sono limiti nell’invio di una richiesta passata tramite un body |
Possibilità di salvare la query string come link o per essere richiamata | Collegamento invisibile, nessuna operazione possibile |
Minore spreco di risorse se si passano spesso gli stessi dati | Ogni volta vengono rielaborati i dati |
In generale il metodo GET deve essere utilizzato per richieste idempotenti, ovvero quando vengono forniti dati statici sempre uguali. Per es: una home page che passa sempre le stesse immagini su 10.000 invii otterrei un enorme risparmio di risorse, o una form che ha parametri semi fissi che passa gli stessi dati. Nel GET si sfrutta la cache del browser.