Json e Ajax accoppiata vincente

17 Luglio 2007

Json è un formato di testo indipendente dal linguaggio che usa convenzioni simili a quelle della famiglia dei linguaggi C.

Si basa su due strutture di dati supportate praticamente da tutti i linguaggi di programmazione moderni:

• una raccolta di coppie nome/valore [oggetti, record, dizionari…]
• una raccolta ordinata di valori [array…]

Inoltre Json è basato su un sottoinsieme di Javascript Standard, quindi non ci dovrebbero essere problemi di compatibilità con i vari browser.


Oggetto json

insieme ordinato di coppie nome/valore. inizia e termina con una parentesi graffa{};

Array Json

raccolta ordinata di valori che inizia e termina con le parentesi quadre [];

Valore Json

Vengono separati da una virgola e possono essere: Stringa, numero, true e false, oggetto, array, null

In particolare il vanto di Json è di essere un formato di scambio molto più leggero di xml.

Esempio di utilizzo Json

File Json
json.js

File html con i form da cui far partire il nostro esempio

json_first.html

function doJSON() {
var user = getUserObject();
var userAsJSON = JSON.stringify(user);
alert("ecco l'oggetto User di Json :\n " + userAsJSON);
var url = "json_first.php?timeStamp=" + new Date().getTime();
var postVar= 'user_data='+encodeURIComponent(userAsJSON);
createXMLHttpRequest();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(postVar);
}

La funzione crea un oggetto User con i valori della form,

function getUserObject() {
return new User(document.dati.username.value, document.dati.mail.value);
}
function User(username, mail) {
this.username = username;
this.mail = mail;
}

e lo invia via Post in formato Json al server sotto forma d querystring:

Ecco il post della pagina:

user_data {”username”:”bonzo”,”mail”:”ilbonzo.org@gmail.com”}

La pagina php processa i dati e li rimanda alla prima pagina

json_first.php

$jsonString= stripslashes($_POST['user_data']);
var_dump(json_decode($jsonString));
$jsonPost=json_decode($jsonString);
echo 'username: ';
echo $jsonPost->username;
echo ' mail: ';
echo $jsonPost->mail;

L’esempio è molto semplice, ma serve solo per capire le potenzialità di Json e Ajax.
Scarica esempio

Nota:
Json su PHP si può usare dalla versione 5.2, prima serviva il repository PECL.

Gabba Gabba Hey

Bonzo

GET e POST

22 Maggio 2007

Ultimamente sto leggendo e studiacchiando alcuni manuali di Ajax, e in più di uno ho trovato questa distinzione tra i metodi GET e POST che si usano per comunicare con il Server negli script.

GET serve per ottenere delle cose;

POST serve per fare delle cose;

In particolare dalle specifiche HTTP si capisce che GET serve per recuperare dei dati, mentre POST serve per interagire con il server in modo da modificarne lo stato.

Non avevo mai pensato a distinguerli in questo modo, avevo sempre ragionato solo sulla differenza che i due metodi usano per inviare i parametri al server.
• nel metodo GET i dati vengono accodati all’indirizzo della pagina richiesta, facendo seguire il nome della pagina da un punto interrogativo e dalle coppie nome/valore dei dati vengono mandati che ci interessano.
• nell metodo POST, i dati vengono invece inviati in maniera da non essere direttamente visibili per l’utente, attraverso la richiesta HTTP che il browser invia al server.

Ciò dava come termine di scelta il fatto che si volesse un indirizzo lungo con i parametri visibili, o un indirizzo corto senza parametri accodati (che si risolveva con una scelta molto soggettiva).
Il Problema di GET può essere che alcuni Browser e Server limitano la lunghezza dell’URL, quindi troppi parametri non vanno bene, ma alla fine un metodo valeva l’altro…

Con questa divisione invece si ha una più chiara concezione di quando usare uno o l’altro.
Un problema che si può verificare nell’usare GET per modificare lo stato del server è questo:
Usando Get per Cancellare un record per esempio, si corre il rischio che se nel Browser è installato Google Accelerator, i dati vengano cancellati, senza che l’utente lo voglia.
37signals si accorse di questo problema quando i suoi utenti cominciarono a lamentarsi perchè i loro dati erano spariti.

Trovandomi d’accordo d’ora in poi mi impegnerò a usare questa distinzione nelle mie applicazioni.

Gabba Gabba Hey
Bonzo

Resoconto PHPday

19 Maggio 2007

PHPday

Arrivato in ritardo ovviamente, forse perché inconsciamente non volevo sentire l’intervento di Microsoft….

Microsoft e PHP insieme un po’ stonano….

Premetto che ho deciso di seguire il canale Developer (quello seguito da più persone) quindi non dirò molto dei vari Talk del canale Enterprise. Di molti talk è possibile trovare il materiale sul sito del PHPday.

Il primo intervento ascoltato è stato quello di Francesco Trucchia che ci ha parlato dello sviluppo RAD di PHP con strumenti Open-source, in particolare ci ha illustrato il framework Symfony.
Dopo una breve introduzione ha provato a farci vedere come si può sviluppare un Blog con questo strumento in pochi minuti. Il tempo a sua disposizione purtroppo non è bastato, però la potenza del Framework è sembrata reale, per questo motivo credo che nei prossimi mesi lo riempirò di email per farmi aiutare a studiare Symfony…. auguri.
Ecco le slide utilizzate:

http://www.slideshare.net/fullo….

Scusate la pausa pranzo….
Pausa pranzo al phpday
Nel pomeriggio abbiamo ascoltato:
Jacopo Romei che ci ha parlato dell’XP (eXtreme Programming):

“Insieme di pratiche empiriche per lo sviluppo del software che ha come obbiettivo la soddisfazione del cliente.”

Con una presentazione molto spigliata è riuscito a farmi entrare in questo argomento a me sconosciuto.
Interessante lo strumento Gobby: Editor che permette di avere N cursori gestite da più persone in remoto. Insieme a Skype ottimo strumento per il Pair Programming.
Ecco le slide del Talk:
http://www.slideshare.net/fullo/…

Subito dopo Gabriele Lana ci ha parlato di Testing web application:
Sintesi dell’intervento
Debug Sucks——————- Test Rocks.
Facendo notare che i Bug è meglio evitarli all’inizio, invece che risolverli, perché i Test hanno un costo misurabile in maniera migliore dei Bug.
Ci ha parlato dei test facendo anche delle parentesi su quali sono gli strumenti che si possono usare:
Test Unitari: PHPunit;
Test Funzionali: Selenium;
Test di accettazione: PHPfit;

Ecco le slide del Talk:
http://www.slideshare.net/fullo/…
Dopo il coffee Break Enrico Zimuel ha parlato di sicurezza delle applicazioni in PHP
L’intervento, risultato un po’ meno spumeggiante rispetto a quelli precedenti è in realtà stato molto utile, per chi come me non è così padrone di un argomento molto importante come quello della sicurezza in PHP.

I consigli sulle cose da fare sempre per evitarsi molti problemi:
• filtrare sempre input;
• Tenere Register Globals sempre OFF;
• Formattare sempre Output;

Le varie tecniche illustrate, in maniera molto generale visto il poco tempo a disposizione, per fare danni in applicazioni PHP sono state:
• SQL injection
• Cross site scripting
• Exposed source code
• Session fixation
• Session Hijacking
• Cross-site request forgeries
Ecco le slide del Talk:
www.slideshare.net/fullo/…

Alla fine l’intervento di Andrea Giardina che ha parlato di PHP For Applications
Applicazione che permetti di creare applicazioni web a partire da applicazioni scritte in particolare per Access.
In particolare non ha usato slide ma ha fatto in tempo reale un piccolo esempio realizzando una applicazione riguradante un catalogo di libri.
P4A è ancora compatibile con PHP4 anche se stanno pensando di migrare a PHP5

Come partner erano presenti:
Microsoft, non manca mai….
Zend che ha tenuto un talk del canale Enterprise e che ringrazio per avermi regalato PHPprofessionale, purtroppo due giorni prima lo avevo già comprato. Peccato 12 euro che potevo risparmiare… Tra tutti all’interno dei Talk il marchio più pubblicizzato.
Yahoo che ha tenuto un talk del canale Enterprise.

Molto interessante il fatto che si potesse seguire l’evento su UstreamTv, la prossima volta se non riuscirò a venire avrò un’alternativa. Ecco i potenti mezzi con cui si è Filmato l’evento di webtv:
Webcam phpday per Ustream.tv
Inoltre su twitter si avevano continui aggiornamenti sui talk che stavano.

Evento sicuramente interessante e ben organizzato, ringrazio il GrUSP del quale sono diventato socio ordinario, ci si vede il prossimo anno.

Php day 2007

15 Maggio 2007

phpday terza edizione - 18 maggio  2007 verona

PHPDay 4 edizione: Verona, 18 Maggio 2007

Venerdì 18 maggio 2007 il GrUSP (Gruppo Utenti e Sviluppatori PHP italiani) organizza la quarta edizione del PHPDay, l’unica giornata nazionale interamente dedicata al linguaggio PHP. Quest’anno il PHPDay si svolgerà a Verona. Come negli anni precedenti, l’accesso al PHPDay libero e gratuito per tutti!

A partire da questa edizione il PHPDay si pone come nuovo obiettivo la divulgazione del PHP non solo tra curiosi ed appassionati, come successo negli anni precedenti, ma anche presso le aziende, nell’ottica di diffondere sempre più l’adozione di questo versatile linguaggio negli ambienti lavorativi. A questo scopo verranno allestiti due percorsi in due aule distinte: Enterprise e Developer.

Le conferenze del percorso Enterprise saranno focalizzate sull’uso di PHP in ambito aziendale, ad esempio con la presentazione di prodotti sia commerciali che gratuiti, di casi d’uso e di successo, delle possibilit di inserimento e integrazione del php al di fuori del suo naturale ambiente LAMP.

Nel percorso Developer saranno invece presentati argomenti di taglio prettamente tecnico, con conferenze sulle tecnologie d’avanguardia, sui nuovi framework per PHP, sulle metodologie di programmazione… insomma, su tutto quello che fa geek.

Già confermata la presenza di importanti ospiti sia nazionali che internazionali, tra cui relatori di Zend ed eZ Systems.

Per essere aggiornato sulle ultime novità, per presentare un tuo argomento o conoscere le possibilità di sponsorizzazione consulta il sito www.phpday.it

Se riesco ci vado, poi racconto

Gabba, Gabba Hey
Bonzo