jump to navigation

Fondamenti PHP5 – dipense del corso 2 Novembre 2008

Posted by gianfrasoft in PHP.
Tags: , , , , , ,
add a comment

Pubblico, a beneficio dei partecipanti, le dispense del corso di 24 ore su PHP5 tenuto a Roma presso Lottomatica S.p.A.

Nell’ambito del corso vengono trattati il paradigma di programmazione web, le strutture principali del linguaggio PHP5, la programmazione ad oggetti. Inoltre, si fa riferimento costante ai problemi legati alla sicurezza ed allo stile di programmazione che previene le principali modalità di attacco ai siti realizzati in PHP: SQL injection, session fixation, ecc.

(continua…)

PHP – Ispezione delle strutture complesse (array e oggetti) 9 Febbraio 2008

Posted by gianfrasoft in PHP.
Tags: , , , , ,
add a comment

Consideriamo di dover accedere ad un array associativo di cui non si conosce la reale struttura. L’array può contenere, in ciascuna locazione, informazioni di qualsiasi tipo: esso può contenere contemporaneamente stringhe, interi o anche altri array associativi.

In PHP è facile accedere al contenuto di un array associativo anche se non se ne conosce la struttura interna. Per far ciò basta effettuare un semplice ciclo “foreachcome descritto di seguito:

foreach($array as $name => $value)

dove la variabile $array contiene l’array che vogliamo esaminare e le variabili $name e $value conterranno, ad ogni ciclo, il nome ed il valore di ciascun elemento dell’array.

Ad ogni ciclo, per stabilire se l’elemento dell’array associativo che stiamo esaminando è a sua volta un array, basta far riferimento alla funzione is_array del PHP: in caso positivo si può richiamare la stessa funzione ricorsivamente perché esamini il contenuto del nuovo array.

Generiamo, quindi, una struttura XML che in corrispondenza di ogni array produce un nodo XML che indicheremo con <bag> ed in corrispondenza di ciascun elemento semplice produca un nodo XML <item> contenente tra gli attributi il nome ed il tipo dello stesso:

 (continua...)

PHP – Passaggio di parametri organizzati gerarchicamente 9 Febbraio 2008

Posted by gianfrasoft in PHP.
Tags: , , , ,
add a comment

Consideriamo un form che chiede all’utente di introdurre i propri dati anagrafici allo scopo di organizzarli in una struttura del tipo:

  • dati_personali
    • nominativo
    • età
    • indirizzo
      • via
      • civico
      • città

E’ facile individuare in questa struttura dati l’albero delle informazioni che pone le proprie radici nel nodo dati_personali e che realizza tre livelli di profondità. Questo albero contiene in totale 7 nodi organizzati in 3 livelli.

In questo articolo esamineremo come sia possibile costruire una pagina dinamica in PHP che sia in grado di raccogliere le informazioni introdotte dall’utente nell’ambito di un form, e di elaborarle nel pieno rispetto della loro struttura gerarchica, qualunque sia in form. Nella fattispecie, la pagina dinamica recupererà le informazioni introdotte dall’utente riorganizzandole nell’ambito una struttura ricorsiva composta da array associativi: ad ogni livello dell’albero verrà associato un array ottenendo, nel caso descritto sopra, tre array:

il primo array conterrà tre informazioni: nominativo di tipo stringa, età di tipo intero ed un array associativo relativo all’indirizzo; l’array dell’indirizzo conterrà a sua volta tre informazioni: via di tipo stringa, civico di tipo intero e città anch’esso di tipo stringa.

Per prima cosa va fissata una rappresentazione delle informazioni nell’ambito del form HTML che dia modi di stabilire il tipo e la gerarchia dei dati introdotti dall’utente, ciò perché possano essere correttamente processati dalla pagina PHP. Un modo per effettuare questa rappresentazione è quello di strutturare i nomi delle etichette di input in modo che contengano sia il nome del parametro di input che il tipo dello stesso separati da un carattere speciale, ad esempio:

string%nominativo

inoltre, per rendere possibile la gerarchia delle informazioni, verranno introdotti nei nomi delle etichette <input> una coppia di parentesi quadre per ogni livello di annidamento dell’informazione associando al livello il particolare tipo array. Nel caso delle informazioni anagrafiche descritte nella pagina precedente avremo infatti:

dati_personali[string%nominativo]
dati_personali[int%eta]
dati_personali[array%indirizzo][string%via]
dati_personali[array%indirizzo][int%civico]
dati_personali[array%indirizzo][string%citta]

Dalle informazioni riportate sopra possiamo dedurre che:

  • i tipi string, int ed array non devono necessariamente corrispondere ai tipi del PHP; essi rappresentano semplicemente un protocollo per la trasmissione di informazioni sul tipo dei dati e servono per un controllo dell’integrità da parte della pagina PHP;
  • ai dati che rappresentano dei “contenitori” di informazioni veine associato il tipo array;
  • le parentesi quadre aiutano a definire i differenti livelli di annidamento.

Ecco quindi come compare il testo della form HTML:

(continua…)