Guida Al Codice Di Enrico Mensa
Guida Al Codice Di Enrico Mensa
Guida al codice
Enrico Mensa,
Basato sulle lezioni del del prof. Gianfranco Ruffo
Tecnologie Web
Indice degli argomenti
HTML
1) Nozioni su HTML 1
2) I tag 2
<html> </html>
<head> </head>
<body> </body>
<title> </title>
<p> </p>
<center> </center>
</br>
<b> </b>, <i> </i>, <em> </em>, <code> </code>, <strong> </strong>
<font> </font>
<!-- -->
<img/>
<table> </table>
<div> </div>
<colgrup/>
<frame> </frame>
<form> </form>
Tecnologie Web
Indice degli argomenti
<input> </input>
<button> </button>
<textarea> </textarea>
CSS
1) Nozioni su CSS 5
2) I selettori 7
Il selettore universale
Il selettore di tipo
Il selettore di discendenti
Il selettore di figli
Il selettore di adiacenti
Il selettore di attributi
Il selettore di classe
Il selettore di ID
3) Pseudo-classi e pseudo-elementi 9
:first-child
:link
:visited
:hover
:active
Tecnologie Web
Indice degli argomenti
:focus
:first-line
:first-letter
Box model
Attributo display
Attributo z-index
I layout tableless
JavaScript
1) Nozioni su JavaScript 14
2) Il core di JavaScript 14
3) Gli oggetti 16
3.5) Ereditarietà
4) Gli eventi 18
6) JavaScript e CSS 21
7) Controllo dell’input 22
PHP
1) Script 24
Tecnologie Web
Indice degli argomenti
2) Il server 24
3) Core php 24
3.1) Variabili
Variabili superglobali
3.2) Assegnamenti
3.3) Stringhe
3.4) Array
3.5) Costrutti
3.8) Costanti
5) Cookies e sessioni 29
5.3) I cookies
Tecnologie Web
Guida al codice
HTML
1) Nozioni su HTML
HTML è un linguaggio di markup. Come tutti i linguaggi di markup, quindi, il corpo è costituito da una parte che è il
contenuto della pagina ed un’altra che specifica come il contenuto deve essere rappresentato.
- HTML 4.01 Transitional DTD (include tutto ciò che fa parte della DTD rigorosa più elementi e gli attributi
disapprovati):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN” "http://www.w3.org/TR/html4/loose.dtd">
- HTML 4.01 Framset DTD (include la DTD transitoria completa più i frame) - SCONSIGLIATA:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN” "http://www.w3.org/TR/html4/frameset.dtd">
EM
Tecnologie Web
Guida al codice
2) I tag
Note per la lettura di questo documento:
Con [ ] si rappresentano le scelte possibili (ove non banale indicarle) e fra () la spiegazione dell’attributo. Ogni
attributo è separato da /.
<html> </html>
- Descrizione: delimita il documento html.
<head> </head>
- Descrizione: delimita le caratteristiche del documento.
<body> </body>
- Attributi: bgcolor (colore di sfondo) / background (nome file immagine) / text (colore testo) / link (colore link da
visitare) / vlink (colore link visitato) / alink (colore link con cursore sopra).
- Descrizione: delimita il corpo del documento.
<title> </title>
- Descrizione: specifica il titolo della pagina.
<p> </p>
- Attributi: align [center | left | right | justify] (allinea un paragrafo)
- Descrizione: inserisce un paragrafo (a capo automatico).
<center> </center>
- Descrizione: centra del testo.
</br>
- Descrizione: manda a capo.
<b> </b>, <i> </i>, <em> </em>, <code> </code>, <strong> </strong>
- Descrizione: rispettivamente il carattere è modificato in bold, italic, enfatizzato, codice, bold.
<font> </font>
- Attributi: size (dimensioni) / color (colore) / face (il font)
- Descrizione: rispettivamente il carattere è modificato in bold, italic, enfatizzato, codice, bold.
<!-- -->
- Descrizione: commento.
EM
Tecnologie Web
Guida al codice
<a href="#art1">Articolo1</a>
Clickando sul secondo link si viene portati a dove è stato scritto il primo link.
<img/>
- Attributi: src (url del file d’origine) / align [left | right | center] / border (stile del bordo) / height (altezza) / width
(larghezza) / hspace (spazio fra l’immagine ed il testo a fianco) / vspace (spazio fra l’immagine ed il testo sopra e
sotto) / alt (testo alternativo all’immagine).
- Descrizione: inserisce un’immagine.
<table> </table>
- Attributi: width (larghezza) / cellspacing (distanza fra una cella e l’altra - default 1pixel) / cellpadding (distanza fra
lo spazio vuoto ed il dato nella cella. Esprimibile in percentuale o pixel - default 0) / bgcolor (colore di sfondo) /
border (stile del bordo)
- Descrizione: Crea una tabella vuota.
<div> </div>
- Attributi : align [left | right | center | justify]
- Descrizione: il div serve per suddividere una parte della pagina da un’altra. È l’evoluzione della table con border
nullo.
<colgrup/>
- Attributi : span (numero di colonne che compongono il gruppo) / align [left | right | center | justify] / width
(larghezza delle colonne componenti il gruppo)
- Descrizione: crea gruppi di colonne.
<frame> </frame>
/* TODO */
EM
Tecnologie Web
Guida al codice
<form> </form>
- Attributi : action (pagina o eseguibile che riceverà i dati del form) / method [get | post] (metodologia con cui
comunicare con l’action, con get l’URL viene compilato in chiaro con gli attributi con il post invece viene incluso nel
messaggio inviato in HTTP e non nell’URL) / enctype [application/x-www- form-urlencoded ! multipart/form - data]
(specifica il tipo di dato che verrà inviato al server, utile per la negoziazione) / accept-charset (quale codifica di
caratteri è accettata all’interno del form) / accept (specifica i tipi, elencati uno dopo l’altro e separati da virgola, che il
server sarà in grado di elaborare una volta inviati i dati del form) / name (identificare, ma è obsoleto, meglio id.
Retrocompatibilità!)
- Descrizione: fornisce un contenitore di moduli per form.
<input> </input>
- Attributi :
- type [text (crea un textfield da una riga) | password (textfield ma con pallini per nascondere l’input) |
checkbox | radio | submit (tasto che permette l’invio del modulo) | reset (resetta tutti i campi del form) | file
(permette di caricare un file) | hidden (è un campo nascosto, utile per accogliere informazioni dal server) |
image | button]
- name
- value (valore iniziale del controllo, facoltativo tranne per radio e checkbox)
- size (larghezza del controllo, numero di caratteri per text e password)
- maxlength
- checked (per radio e checkbox)
- src (se è image)
- Descrizione: crea una casella di input per interagire con l’utente.
<button> </button>
- Attributi : type [submit (tasto che permette l’invio del modulo) | reset (resetta tutti i campi del form) | button],
name, value (valore iniziale del controllo)
- Descrizione: funziona come l’input ma fornisce più possibilità di personalizzazione.
<textarea> </textarea>
- Attributi : name, rows, cols
- Descrizione: area di testo
EM
Tecnologie Web
Guida al codice
CSS
1) Nozioni su CSS
Lo scopo di CSS è quello di separare il codice “core” dalla parte grafica del sito. Questo ne aumenta la portabilità, la
facilità di sviluppo e di gestione.
CSS introduce per altro molte funzioni ed è uno strumento potente.
Esempio
body !! //SELETTORE
{ ! ! //DICHIARAZIONE (con lista proprietà = valore fra le graffe)
! color: black;
! align: left;
}
Ciò che è espresso nella dichiarazione viene applicato alla selezione. Ogni riga della dichiarazione deve terminare
con un punto e virgola, tranne l’ultima in cui può essere omesso.
<head>
! <style type=“text/css”>
! ! <!-- statements di CSS -->
! </style>
</head>
(si suggerisce di mantenere gli statements all’interno di commenti HTML poiché si evita l’indicizzazione dei motori)
EM
Tecnologie Web
Guida al codice
<head>
! <link rel=“stylesheet” type=”text/css” href=”stile.css”>
</head>
Nella fattispecie si sta applicando il CSS scritto nel file “stile.css” che si trova nella stessa folder del file HTML.
Per link è inoltre presente l’attributo opzionale media, che specifica su quale dispositivo applicare lo stile CSS.
I possibili valori sono: all (tutti i dispositivi), aural (sintetizzatori vocali), braille, embossed (stampanti braille),
handheld (palmari), print (materiale a pagine opache), projection (materiale da proiettare), screen (per schermi
del computer), tty (terminali), tv.
@import url(http://...);
@import “http://...”;
ATTENZIONE! Le regole specificate in un foglio di stile annullano quelle importate, e la direttiva @import relativa al
CSS deve essere la prima fra tutte.
La differenza fra @import e <link> è che nel primo caso è possibile fondere insieme regole di stile.
Tutti questi fogli di stile si sovrappongono. Dunque quali regole vengono eseguite? Si segue il peso:
Perciò le definizioni applicate all’interno del codice (attributo style) hanno priorità su quelle definite all’interno
dell’head con il tag <style> e con il tag <link>, che a loro volta hanno priorità sui CSS da @import.
Fra fogli dello stesso autore, si tiene conto della specificità (ad esempio se abbiamo definito una regola per DIV ed
una regola per un id #1234, un <div id=”#1234”> avrà applicata la seconda regola e non la prima.
Nel caso di pari specificità, ci si basa sull’ordine di scrittura: in caso di conflitto verrà eseguita solo l’ultima regola.
Quindi ad esempio:
<html>
<head>
! <style type=“text/css”> h1 {color:green;} </style>
! <link rel=“stylesheet” type=”text/css” href=”stile.css”> </link>
</head>
<body style=”color:red”>
! <h1 style=”color:blue”>Che colore ho?</h1>
</body>
</html>
Supponendo che il file “stile.css” imposti il colore degli h1 a giallo, l’h1 avrà come colore: giallo, verde, rosso o blu?
La risposta è blu, poiché h1 è l’ultimo a ridefinire il colore tramite l’attributo style (massimo peso).
6
EM
Tecnologie Web
Guida al codice
2) I selettori
Il selettore universale
Descrizione: seleziona ogni singolo elemento HTML (di ogni tipo) all’interno della pagina.
Esempio:
* { color: black; }
Il selettore di tipo
Descrizione: seleziona il nome di un tipo di elemento di HTML. Ogni istanza di quel certo elemento verrà selezionata.
Esempio:
H1 { font-family: sans-serif; } // tutti gli elementi H1 avranno font sans-serif
Il selettore di discendenti
Descrizione: costituito da due o più selettori separati da uno spazio bianco. Dato un selettore “A B” verrà selezionato
ogni B che discende da un A. Discendente significa che si trova annidato all’interno di A a qualunque livello.
Esempio:
body p { color: Red; }
Tutti i p contenuti nel body a qualunque livello avranno colore rosso
Il selettore di figli
Descrizione: costituito da due o più selettori separati da “>”. Dato un selettore “A > B” verrà selezionato ogni B che è
figlio diretto (al primo livello) di un A.
Esempio:
body > p { color: Red; }
Tutti i p contenuti nel body al primo livello saranno colorati di rosso.
* <body><p> Ciao! </p></body> selezionato
* <body><center><p> Ciao! </p></center></body> non selezionato
Il selettore di adiacenti
Descrizione: costituito da due selettori separati da “+”. Dato un selettore “E1 + E2” verrà selezionato ogni E2 che ha
come padre lo stesso di E1 ed E2 precede immediatamente E1.
Esempio:
H1 + p { text-indent: 0; }
Tutti i p “fratelli” di H1 (cioè che seguono direttamente dopo un H1) non dovrebbero essere indentati.
* <h1> Testo </h1><p> Ciao! </p> selezionato
* <h1> Testo </h1><h2><p> Ciao! </p></h2> non selezionato (<h2> include <p>)
* <h1></h1><h2> Altro testo </h2><p> Ciao! </p> non selezionato (<h2> è fra <h1> e <p>)
Il selettore di attributi
Descrizione: a seconda della presenza dell’attributo (ed eventualmente del suo valore) in un certo elemento,
quell’elemento viene selezionato.
- E[att], E viene selezionato se ha specificato l’attributo att, qualunque valore esso assuma.
- E[att = val], E viene selezionato se ha specificato l’attributo att con valore val.
- E[att ~= val], E viene selezionato se, data la serie di parole (separate da spazio) che att assume, fra quelle ha
specificato il valore val.
- E[att |= val], E viene selezionato se, data la serie di parole (separate da trattino) che att assume, la prima fra quelle
è il valore val.
EM
Tecnologie Web
Guida al codice
Esempio:
H1[title] { color: Blue; }
Tutti gli h1 con title specificato (con qualunque valore) verrà selezionato.
* <h1 title=”titolo”> Testo </h1> selezionato
* <h1> Testo </h1> non selezionato
Il selettore di classe
Trattasi di un selettore di attributo (il terzo sopracitato). Se si sta specificando per l’attributo class, è possibile usare la
dot notation. Pertanto E[class ~= val] equivale a dire E.val. Perciò, notazioni legittime sono:
Nel primo caso tutti gli elementi che specificano “myclass” fra i nomi assegnati all’attributo class verranno
selezionati.
Nel secondo caso, solamente gli <h1> che specificano “myclass” fra i nomi assegnati all’attributo class veranno
selezionati. Quindi gli h1 nella forma: <h1 class=”myclass”>.
Il selettore di ID
Descrizione: ogni elemento può specificare un attributo ID con valore univoco. Nel css, per selezionare quell’ID, è
sufficiente inserire prima del valore di ID un hashtag “#”.
Esempio:
#footer { color: Red; }
EM
Tecnologie Web
Guida al codice
3) Pseudo-classi e pseudo-elementi
Le pseudo-classi sono caratteristiche normalmente non deducibili dall’albero della pagina. Una pseudo-classe,
infatti, non definisce un elemento ma bensì un particolare stato di un elemento.
Gli pseudo-elementi creano invece astrazioni sopra all’albero della pagina aggiungendo così funzionalità. Ad
esempio l’accesso alla prima riga o alla prima lettera di un certo elemento.
Le pseudo-classi sono:
:first-child
Descrizione: seleziona un elemento che è il primo figlio di un altro elemento.
Esempio:
DIV > p:first-child { text-indent: 0; }
Verrà indentato a zero ogni P che è primo figlio di un DIV.
* <div><p> Ciao! </p></div> selezionato
* <div> Testo </h1><p> Ciao! </p> non selezionato (non è nel <div>)
* <div><h1>Testo</h1><p> Ciao2 </p> <div> non selezionato (<h1> è il primo figlio, non <p>!)
:link
Descrizione: si applica ai collegamenti non ancora visitati.
Esempio:
A:link { color: blue; }
:visited
Descrizione: si applica ai collegamenti già visitati.
Esempio:
A:visited { color: blue; }
:hover
Descrizione: si applica agli elementi puntati (col cursore) ma non ancora attivati.
Esempio:
DIV:hover { color: blue; }
:active
Descrizione: si applica agli elementi attivati, ovvero in quell’istante che intercorre fra il click dell’utente ed il suo
rilascio.
Esempio:
DIV:active { color: blue; }
:focus
Descrizione: si applica quando l’elemento accetta eventi da tastiera o da altri input testuali.
Esempio:
input:focus { background-color: yellow; }
EM
Tecnologie Web
Guida al codice
:first-line
Descrizione: seleziona la prima linea di un paragrafo.
Esempio:
P:first-line { text-transform:uppercase }
:first-letter
Descrizione: seleziona la prima lettera di un paragrafo.
Esempio:
P:first-letter {
! font-size:200%;
! font-style: italic;
! font- weight:bold;
! float: left
}
10
EM
Tecnologie Web
Guida al codice
Box model
Bordo
superiore
Contenuto
Margine destro
Height
Padding sinistro
Padding destro
Margine sinistro
Width
Bordo
inferiore
EM
Tecnologie Web
Guida al codice
Attributo display
Vi sono due diversi tipi di blocchi. I blocchi inline (es: <span>) che tendono a riempire tutta la linea ed i blocchi
block che invece occupano una sezione separata dalle altre. Per controllare questo, usiamo l’attributo display.
- display: inline, block, list-item (viene usato come elemento di una lista)
Attributo z-index
Per definire un ordinamento fra gli oggetti nella pagina, è necessario l’utilizzo dello z-index.
- z-index: valore, auto.
Un oggetto con z-index:10 sarà posizionato più in alto di uno con z-index:2.
12
EM
Tecnologie Web
Guida al codice
I layout tableless
Vediamo ora alcuni layout “base” adoperati nei siti. Si suggerisce l’utilizzo di un layout fisso, per evitare di
coinvolgere più possibile gli attributi per il posizionamento, noti per la loro “difficile” implementazione.
<div id="container">
! <div id="head">
! </div>
!
! <div id="navigation">
! </div>
! <div id="content">
! </div>!
! <div id="footer">
! </div>!
</div>
13
EM
Tecnologie Web
Guida al codice
JavaScript
1) Nozioni su JavaScript
JavaScript è un linguaggio di scripting (quindi interpretato) client-side, object-oriented.
Il suo interprete è il browser web.
Infine è possibile scrivere codice JavaScript direttamente all’interno dei tag, associandoli ad un attributo che è nella
fattispecie un evento. JavaScript viene quindi adoperato come gestore di eventi.
Nella fattispecie dei link, si può anche adoperare l’attributo href direttamente (purché si specifichi che si sta
adoperando JavaScript:
2) Il core di JavaScript
JavaScript è case sensitive, i commenti sono:
- /* testo commentato */
- //testo commentato
- <!-- testo commentato //-->
Sono supportati: if else, for, while, do while, switch, try catch finally.
14
EM
Tecnologie Web
Guida al codice
function square(x) {
! return x*x;
}
ma anche:
f = new Function(“x”, “return x*x;”);
f = function(x) {return x*x;};
EM
Tecnologie Web
Guida al codice
3) Gli oggetti
Ogni qualvolta si voglia aggiungere una proprietà ad un oggetto è sufficiente scrivere (si crea propr1):
myobj.prop1 = “text”;
Il costruttore
Volendo è possibile creare un costruttore per creare oggetti “sempre uguali”.
function Rectangle(w, h) {
! this.width = w;
! this.height = h;
! this.area = function() {
! ! return this.width * this.height;
! }
}
E poi semplicemente richiamarlo con l’utilizzo del costrutto new: var rect1 = new Rectangle(2,4);
delete rect1.perimeter;
for(i in rect) {
! alert(i);
}
16
EM
Tecnologie Web
Guida al codice
function Rectangle(w, h) {
! this.width = w;
! this.height = h;
}!
Rectangle.prototype.area = function() {
! return this.width * this.height;
}
ATTENZIONE
I prototipi forniscono inoltre dinamicità. Infatti, se un prototipo viene aggiunto ad una istanza di un certo oggetto,
anche tutti gli altri oggetti avranno quel prototipo (anche se il prototipo è stato aggiunto dopo la costruzione delle
altre istanze!).
3.5) Ereditarietà
JavaScript supporta anche l’ereditarietà sfruttando la proprietà prototype (in questo modo l’oggetto subClass avrà
anche la proprietà ‘hello’):
function superClass() {
! this.hello = “Hello”;
}!
function subClass() {
! this.bye = “Bye”;
}
17
EM
Tecnologie Web
Guida al codice
4) Gli eventi
JavaScript fornisce differenti, radunabili in quattro categorie:
- Windows events: onload, onunload
- Form events: onchange, onsubmit, onreset, onselect, onblur, onfocus
- Keyboard events: onkeyup, onkeydown, onkeypress
- Mouse events: onclick, ondblclick, onmousedown, onmouseup, onmousemove, onmouseover, onmouseout
Il più importante è l’oggetto document, che è ciò che ci da accesso al contenuto vero e proprio della pagina.
18
EM
Tecnologie Web
Guida al codice
19
EM
Tecnologie Web
Guida al codice
Esempio
Si noti che gli ultimi due metodi restituiscono una lista, quindi è possibile accedere ai singoli elementi con questa
sintassi:
getElementsByTagName(“a”)[0];
20
EM
Tecnologie Web
Guida al codice
6) JavaScript e CSS
Attraverso JavaScript è possibile anche interagire con CSS e modificarne eventualmente le proprietà.
elem.style.color = “green”;
Si noti che per attributi con il trattino, il rimappaggio è stato effettuato usando la tecnica della gobba di cammello
e quindi background-color è diventato backgroundColor.
Unica eccezione è float, che è diventato cssFloat.
elem.style.setProperty(“color”, “green”);
actualColor = elem.style.getPropertyValue(“color”);
21
EM
Tecnologie Web
Guida al codice
7) Controllo dell’input
JavaScript è spesso adottato per il controllo dell’input. I dati inseriti dall’utente sono sempre da considerarsi
pericolosi ed erronei, quindi richiedono controllo (sia lato client che lato server).
Dopodiché i vari oggetti del form reagiscono ad alcuni eventi secondo questo schema:
Inoltre, in particolare, gli oggetti checkbox e radio button hanno anche la proprietà checked.
Invece l’oggetto select possiede la proprietà selectedIndex e options[].
22
EM
Tecnologie Web
Guida al codice
8) I cookies
Come sappiamo le connessioni HTTP sono stateless ma per simulare una connessione statefull si adoperano i
cookies che sono piccoli file di testo adoperabili dal server per salvarsi alcune informazioni relative al client e alla
connessione attuale.
I cookies hanno quattro proprietà (opzionali) oltre al nome: expires (scadenza), path (quali pagine hanno accesso al
cookie), domain (specifica il dominio a cui devono essere abilitati i server per aver accesso al cookie), secure (il
cookie è trasmissibile solamente in connessioni sicure).
L’oggetto document è dotato della proprietà cookies che null’altro è che una stringa con un elenco di coppie
“attributo” = “valore” separati da ‘;’.
23
EM
Tecnologie Web
Guida al codice
PHP
1) Script
Possiamo scrivere PHP direttamente nella nostra pagina html usando un nuovo tag, <?php ?>.
Grazie a questa implementazione potremo avere pagine dinamiche, con accesso a database e quindi con la
possibilità di fare autenticazioni, ecc.
Il server dovrà disporre di un modulo php in grado di tradurre il codice contenuto nello pseudo-tag. La traduzione
sostituirà completamente il codice fra i tag.
Quindi il sorgente e il file che arriva al client sono diversi.
2) Il server
Il server non si limita a distribuire risorse, ma fornisce anche supporto con ad esempio file di log e di error.
Sul server ci sono due importanti radici: la radice dei documenti e la radice del server.
Apache legge i file di configurazione e si forka con processi figli che gestiscono le singole richieste.
In httpd.conf possiamo specificare:
3) Core php
3.1) Variabili
Le variabili in php sono sempre precedute da $. I tipi sono i soliti, vediamo alcuni esempi:
- $a = 5;
- $t = TRUE;
- array:
- $giorni = array(“lun”, “mar”, “mer”, “gio”, “ven”, “sab”, “dom”);
- $giorni[0] = “lun”, ...
24
EM
Tecnologie Web
Guida al codice
Variabili superglobali
3.2) Assegnamenti
Esistono assegnamenti by value:
- $a = 10
oppure by reference:
- $b = &$a;
3.3) Stringhe
Esistono tre tipologie di stringhe differenti:
Single quoted ‘string’
! $a = <<<EOD
! Stringa su più
! Righe
! Yea
EOD;
- $s .= $a Equivalente a $s = $s.$a
25
EM
Tecnologie Web
Guida al codice
3.4) Array
Oltre alle classiche dichiarazioni:
- $giorni = array(“lun”, “mar”, “mer”, “gio”, “ven”, “sab”, “dom”);
- $giorni[0] = “lun”;
abbiamo
- $giorni[] = “x” Accoda all’array giorni la stringa x
- $a = array ( Array associativo key-value (eventualmente annidabile)
“nome” => “Mario”
“cognome” => “Rossi”
);
3.5) Costrutti
Oltre ai soliti costrutti troviamo il foreach che permette di scorrere gli array associativi:
3.6) Import
Due tipi di import:
- include_once(“nomefile”);
- require_once(“nomefile”);
- include(“nomefile”);
- require(“nomefile”);
Include e require hanno simile funzionamento, ma l’aggiunta di _once evita l’import ricorsivo fra i file.
3.8) Costanti
Una costante (si usa senza dollaro!) è definibile:
- define(NOME_COSTANTE, valore)
! return expression;
}
Le variabili dichiarate all’interno delle funzioni hanno scope locale tranne se precedute dal costrutto global.
- global $var1;
26
EM
Tecnologie Web
Guida al codice
- int fclose(fpointer)
Chiude un file
- boolean is_dir()
- boolean is_file()
- boolean is_link()
- boolean is_readable()
- boolean is_writable()
Per ottenere la data attuale si adopera quindi date( format, time()) o più semplicemente date(format) (caso speciale).
27
EM
Tecnologie Web
Guida al codice
Tutti i parametri sono opzionali, se non si specifica il nome_host di default è impostato localhost:3306.
Dopodiché con mysql_close(resource) si chiude la connessione corrispondente a resource.
mysql_query() restituisce una risorsa oppure TRUE (dipende dalla query) o in alternativa FALSE se la query è mal
composta.
mysql_select_db("dbenricomensa", $connessione)
! or die ("Selezione del database non riuscita");
28
EM
Tecnologie Web
Guida al codice
5) Cookies e sessioni
Dato che il protocollo HTTP è stateless sono necessarie alcune tecniche per “mantenere lo stato” e tenere traccia
delle interazioni precedenti.
<?php
# ex_state.php
$testo="Caspita, che bella giornata!";
$testo=(urlencode($testo));
echo "<a href=\"get_info.php?testo=$testo\">Vai!</A>";
?>
<?php
# get_info.php
echo "Ecco le informazioni: ".$_GET["testo"];
?>
Form 2
Form 1 Form 3
Vengono richiesti altri dati
Vengono richiesti Mostra tutte le
(nome e cognome
nome e cognome informazioni raccolte
saranno hidden)
5.3) I cookies
Come già visto in JavaScript i cookies sono porzioni di informazione salvati sul client utili al server per i più svariati
motivi.
I cookies su php sono molto più semplici da utilizzarsi.
29
EM
Tecnologie Web
Guida al codice
<?php
setcookie ("test_cookie","niente di particolare",time() +43200,"/");
# cookie.php
echo "<HTML>";
echo "<BODY>";
if (isset($_COOKIE["test_cookie"])){
! echo "Ciao cookie, i tuoi contenuti sono: $_COOKIE ["test_cookie"]";
} else {
! echo "Non ho trovato alcun cookie con il nome test_cookie";
}
5.4) Le sessioni
Ogni sessione in PHP è identificata da un id, detto SID (Session IDentifier).
Il browser comunicherà al server il suo SID tramite query string oppure tramite cookies.
Vediamo le funzioni per gestire le sessioni:
- session_start(nome)
Crea una nuova sessione (se è già aperta una sessione con nome nome allora semplicemente restituirà il SID
di quella sessione già aperta).
- session_id()
Restituisce il SID della sessione aperta.
- session_name()
Restituisce il nome della sessione aperta.
- $_SESSION[“var”]
Recupera la variabile var della sessione aperta.
- unset($_SESSION[“var”])
Deregistra la variabile di sessione var della sessione aperta.
- session_destroy()
Chiude la sessione senza deregistrare le variabili della sessione stessa. Quindi facendo un session_start() si
può recuperare la sessione.
30
EM
Tecnologie Web
Guida al codice
- session_get_cookie_params()
Restituisce un array contente i valori (i parametri) della funzione setcookie() che ha implementato la
sessione (infatti la sessione si basa comunque su cookies!)
31
EM