Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

55
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

description

Un seminario che ho tenuto nel 2008

Transcript of Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Page 1: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Progettazione e sviluppo di applicazioni

web 2.0 con PHP e Ajax

Page 2: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Sommario

Definizione del web 2.0

Caratteristiche dei siti web 2.0

Infrastrutture tecnologiche

La piramide del web 2.0

Esempi di siti web 2.0

Page 3: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Sommario

PHP - Storia

PHP – Significato dell'acronimo

PHP - Caratteristiche

PHP – Esempio

PHP – Stringhe

PHP – Array

PHP – Funzioni interne

Page 4: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Sommario

PHP – MySQL

PHP – MySQL - Connessione

PHP – MySQL – Query

PHP – MySQL – Risultato di query

PHP – MySQL – Altre funzioni

PHP – Framework

PHP – Sicurezza

Page 5: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Sommario

Ajax

Ajax – JSON

WebLogiX

STOOPHP

STOOPHP - Prospettive

Page 6: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Definizione del web 2.0

”Web 2.0” indica una nuova generazione di siti

web che cercando di coinvolgere maggiormente

l'utente

Non si tratta spesso di nuove tecnologie ma di

un modo diverso di utilizzare tecnologie già

esistenti

Page 7: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Caratteristiche dei siti web 2.0

Dinamicità dei contenuti aggiornabili senza la

necessità di dover conoscere HTML, FTP

Interfaccie ricche che cercano di portare

l'esperienza desktop sul web

Grafica accattivante: il web 2.0 significa

comunicazione e business

Page 8: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Caratteristiche dei siti web 2.0

Pubblicità inerenti al contesto (Adsense)

Organizzazione dei contenuti in base alla loro

popolarità anziché tassonomia

Syndication

Social bookmarking

Ottimizzazione per motori di ricerca

Page 9: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Infrastrutture tecnologiche

Linux

Apache (o Lighttpd)

Mysql

PHP (o Ruby, Python)

in una parola sola LAMP

Page 10: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Infrastrutture tecnologiche

XHTML

CSS

Javascript per comunicazioni asincrone (Ajax)

... a questo punto occorre solo convincere i

navigatori ad utilizzare un browser che rispetti

gli standard e aggiornato.

Page 11: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

La piramide del web 2.0

Page 12: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Esempi di siti web 2.0

Youtube

Flickr

Digg

Wikipedia

... qualsiasi blog

Page 13: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Web 2.0

I siti web 2.0, compresi quelli citati, sono

dinamici sotto tutti i punti di vista, anche

laddove non dovrebbero esserlo, cioè nel

codice: sono siti che rimangono sempre in beta

Page 14: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Web 3.0

Il Web 2.0 è quindi un fenomeno di

comunicazione e marketing supportato dalla

programmazione web a cui molti non sono

ancora abituati, ma occorre farlo in fretta

perché le sfide del Web 3.0 incombono

Page 15: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Web 3.0

GGG Giant Global Graph – più interattività tra i

siti

Connettività a banda ”larghissima” da qualsiasi

apparecchio

Navigazione in 3 dimensioni stile ”Second Life”

Page 16: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP

Page 17: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP - Storia

Inizialmente sviluppato da Rasmus Lerdorf

come serie di script CGI

Al progetto si unirono Zeev Suraski e Andi

Gutmans che ne scrissero l'interprete Zend

Oggi è alla versione 5 e può essere usato

anche per shell script e applicazioni stand-

alone

Page 18: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Significato dell'acronimo

Si tratta di un acronimo ricorsivo e ”oggi” sta

per PHP: Hypertext Preprocessor

Lerdorf non ne ha comunicato il significato

originario, che secondo la tradizione sembra

essere Personal Home Page

Page 19: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP - Caratteristiche

Sintassi basata sul C

Tipizzazione debole

Orientato agli oggetti (in particolare dalla

versione 5)

Alto livello di astrazione

Page 20: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Caratteristiche

Le variabili hanno il prefisso $ e ciò le permette

di essere utilizzate all'interno di stringhe. Alcune

sono predefinite

$_GET: array che contiene le variabili passate

alla pagina

$_POST: array che contiene variabili

provenienti da from

Page 21: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Esempio<?php

if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {

?>

<h3>strpos() must have returned non-false</h3>

<p>You are using Internet Explorer</p>

<?php

} else {

?>

<h3>strpos() must have returned false</h3>

<p>You are not using Internet Explorer</p>

<?php

}

?>

Page 22: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP - Esempio

strpos è una funzione una stringa in un'altra

In questo caso è stata cercata la stringa MSIE

all'interno di una variabile predefinita, cioé

$_SERVER['HTTP_USER_AGENT'],che

identifica il browser dell'utente

A seconda del risultato, vengono mostrate due

porzioni di HTML differenti

Page 23: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Stringhe

Anche se permane la libertà di trattare le

stringhe a basso livello come in C, possiamo

avvalerci di numerose funzioni per la ricerca, la

sostituzione, il padding, la formattazione,

l'hashing, la trattazione di HTML...

Page 24: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Array

La libertà sugli array è totale: possiamo usare

qualsiasi tipo di variabile per gli indici, qualsiasi

tipo di variabile per i valori, e mescolare i tipi

Page 25: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Array<?php

$arr = array("foo" => "bar", 12 => true);

echo $arr["foo"]; // bar

echo $arr[12];    // true

?>

Page 26: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP - Array

Per eseguire dei cicli sugli elementi di un array,

non dobbiamo preoccuparci delle dimensioni,

grazie al costrutto foreach, che per ogni

elemento dell'array permette di eseguire degli

statement

Ad ogni ciclo abbiamo a disposizione l'indice e il

valore, in variabili con scope limitato

Page 27: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Array

foreach (array_expression as $value)

statement

foreach (array_expression as $key => $value)

statement

Page 28: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Array

Anche per gli array sono presenti numerose

funzioni per eseguire ricerche, sostituzioni,

operazioni di tipo insiemistico, e per trattare gli

stack

Page 29: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Funzioni interne

In PHP sono già presenti diverse funzioni per

accedere a decine di database, collegarsi a

server FTP, elaborare immagini

Il primo livello di espansione del linguaggio è

dato da PECL, insieme di librerie scritte in C

che spesso vengono incorporate nelle

successive release di PHP

Page 30: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP - MySQL

In PHP 4 le funzioni per accedere al database

MySQL erano incorporate al linguaggio: era

ovvio che le persone interessate a PHP erano

interessate anche a questa caratteristica

In PHP 5 occorre abilitare il supporto in fase di

compilazione o caricare il relativo modulo a

runtime, per incompatibilità di licenze

Page 31: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – MySQL

In PHP è stato scritto un ottimo client per

MySQL, PHPMyAdmin, che fornisce

un'interfaccia grafica per la gestione completa

del database

Ovviamente occorre avere un webserver sulla

stessa macchina in cui è in esecuzione il

servere MySQL

Page 32: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – MySQL - Connessione<?php

$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')

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

echo 'Connected successfully';

mysql_select_db('my_database') or die('Could not select database');

?>

Page 33: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – MySQL – Query<?php

$query = 'SELECT * FROM my_table';

$result = mysql_query($query) or die('Query failed: ' . mysql_error());

?>

Page 34: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – MySQL – Risultato di

queryecho "<table>\n";

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

echo "\t<tr>\n";

foreach ($line as $col_value) {

echo "\t\t<td>$col_value</td>\n";

}

echo "\t</tr>\n";

}

echo "</table>\n";

Page 35: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – MySQL – Altre funzioni

mysql_affected_rows: restituisce il numero di

righe che sono state prese in considerazione

nell'ultima query eseguita

mysql_insert_id: restituisce l'ultima chiave

generata se abbiamo eseguito una query di

inserimento su una tabella che ha l'opzione

auto_increment

Page 36: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Framework

Al giorno d'oggi negli ambienti di produzione è

prassi interporre un livello di astrazione tra PHP

e il programmatore, cioè un framework

Il framework ufficiale è PEAR. Uno dei più

utilizzati è Symphony

Page 37: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

PHP – Sicurezza

Occore prestare attenzione agli attacchi di SQL

Injection, Form Injection, Variable Injection.

Fondamentale controllare le variabili che

arrivano dai form, esposti a tutti

Page 38: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax

Ajax è il nome nuovo introdotto dal web 2.0, ma

non si tratta di un nuovo linguaggio di

programmazione, piuttosto di una tecnica:

Asynchronous

Javascript

and XML

Page 39: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax

Il Javascript è una vecchia conoscenza del

web, introdotta da Netscape ed in seguito

adottata da tutti i browser

Spesso i webmaster del Web 1.0 ne abusavano

e molti utenti infastiditi da popup e alert lo

disattivavano

Page 40: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax

Tuttavia se Javascript viene usato bene può

arricchire l'esperienza del navigatore e

alleggerire il carico di lavoro del server

Infatti mentre PHP viene interpretato dal server,

Javascript viene interpretato dal browser

Page 41: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax

La rivoluzione iniziò quando i sviluppatori di

browser iniziarono a includere in Javascript un

oggetto capace di effettuare richieste in HTTP

al server, in maniera trasparente all'utente

Originariamente tale oggetto era stato pensato

per ottenere documenti XML

Page 42: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajaxfunction CreateXmlHttpReq(handler) {

var xmlhttp = null;

try {

xmlhttp = new XMLHttpRequest();

} catch(e) {

try {

xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

} catch(e) {

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

}

xmlhttp.onreadystatechange = handler;

return xmlhttp;

}

Page 43: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax

Una volta ottenuti dei dati XML tramite richiesta

PHP, è possibile cambiare certe parti della

pagina già caricata utilizzando le capacità di

Javascript di modificare gli elementi del DOM

Questo in sintesi è Ajax

Page 44: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajaxfunction myHandler() {

if (myRequest.readyState == 4 && myRequest.status == 200) {

alert(myRequest.responseText);

}

}

function esempio3() {

myRequest = CreateXmlHttpReq(myHandler);

myRequest.open("GET","primo.php");

myRequest.send(null);

}

Page 45: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax

Tuttavia non siamo obbligati a richiedere un

documento XML, possiamo richiedere

frammenti di HTML, testo semplice

Possiamo richiedere documenti statici ma

anche documenti generati da PHP in base a

nuove indicazioni fornite dall'utente

Page 46: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax – JSON

JSON è un formato di codifica che permette in

un linguaggio di programmazione di trasformare

ad esempio un array in una stringa da

decodificare in un altro linguaggio

In questo modo possiamo richiedere con Ajax

una stringa JSON generata da PHP e

convertirla in un array in Javascript

Page 47: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax

Questi esempi di Ajax provengono dal

documento ”Spaghetti Ajax” di Salvatore

Sanfilippo, uno dei primi italiani a trattare

questa tecnologia

Page 48: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Ajax

Ci sono diversi framework Javascript che

permettono di astrarre Ajax, come Prototype, e

altri che arricchiscono l'interfaccia, come

Scriptaculous

Vedere anche mootools e jquery

Page 49: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

Problematiche

Latenza della comunicazione

Javascript è interpretato quindi non è veloce

Diversa mentalità di programmazione

(asincrona)

Page 50: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

WebLogiX

La WebLogiX è una ditta individuale che si

occupa di sviluppo di applicazioni web

Tutte le applicazioni si basano su un framework

sviluppato in proprio, STOOPHP, che fa uso di

programmazione ad oggetti e di Ajax

Page 51: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

STOOPHP

Con STOOPHP la progettazione

dell'applicazione è limitata alla progettazione

del database

In base alle relazioni tra le tabelle vengono

creati elenchi e form

Unica condizione: il database deve essere

progettato con DBDesigner

Page 52: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

STOOPHP

In questo modo il cliente che ha commissionato

il sito può gestire le sue attività commerciali,

turistiche, divulgative e i contenuti del sito

stesso senza accedere in FTP o al database

Page 53: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

STOOPHP

La pagina di gestione è unica e tramite Ajax

viene aggiornata in base alle richieste

dell'utente

I costi di sviluppo sono abbattuti e lo stesso

codice utilizzato da più clienti segnala al

programmatore i bug in maniera trasparente

Page 54: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

STOOPHP - Prospettive

Scrivere documentazione per sviluppo e uso

Realizzare un sistema di update attraverso

SVN

Ottimizzare le prestazioni

Page 55: Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax

STOOPHP - Prospettive

Studiare in maniera approfondita la sicurezza

Riorganizzare il codice in base all'evoluzione di

PHP

Migliorare la procedura di setup, creando uno

strumento di progettazione database che segua

lo standard creato