HTML

PHP

Home page


Il linguaggio PHP (Professional Home Pages) è un linguaggio di scripting lato server con una sintassi ereditata dal c++.
Gli script PHP vengono inclusi direttamente nel codice HTML utilizzando speciali tag che permettono di individuare l'apertura e la chiusura di ogni sezione PHP.
Tag canonici <?php … codice … ?>
Tag di apertura breve <? … codice … ?> Questo tipo di tag non è compatibile con XML e dunque con XHTML.
Tag di stile ASP <% … codice .. %>
Tag di script HTML <script language="PHP"> … codice </script>.
Tutto ciò che è contenuto entro i tag indicati è codice PHP tutto ciò che si trova all'esterno è HTML.
Includere file di codice:
include('percorso/nomefile')
require ('percorso/nomefile')
include_once('percorso/nomefile')
require_once ('percorso/nomefile')
Include e include_once generano un avvertimento relativo ad un eventuale errore; require e require_once provocano un grave errore e terminano lo script. Le funzioni '_once()' indicano che lo script può essere incluso una sola volta per ciascun script PHP. L'alternativa più rigida è require, quella meno include_once().
La sintassi di PHP deriva dal C ma è molto meno rigorosa, ad esempio non sono necessarie le dichiarazione delle variabili o dei prototipi, è parzialmente case-sensitive: il nome delle variabili è sensibile alle maiuscole ma le funzioni e i costrutti fondamentali (if, else, while …) non lo sono.
PHP è indifferente agli spazi vuoti (ciò implica che le istruzioni possano essere scritte anche su più righe); ogni istruzione termina con il carattere ';'.
Ogni espressione è formata da una sequenza di token (numeri, variabili, stringhe, costanti, parole risevate..) fra loro separati da spazi; l'espressione viene valutata utilizzando delle regole di priorità.
Nelle espressioni aritmetiche, l'operatore '*' ha priorità più alta di '+', in caso di priorità uguale, l'espressione viene valutata da sinistra a destra (es. 3.0/4.0/5.0 fornisce il risultato 0.15); si possono comunque utilizzare le parentesi per eliminare ogni dubbio.


I COMMENTI
I commenti di parti di codice seguono le regole del C (// e /* .. */) e del PERL (#):
// questa riga è commentata
/* queste righe
Sono commentate */
# questa riga è commentata


LE VARIABILI
In PHP le variabili iniziano con il simbolo '$';
- il valore della variabile è quello della assegnazione più recente;
- l'operatore di assegnazione è il carattere '=';
- le variabili possono essere dichiarate prima di essere utilizzate ma non è obbligatorio;
- il tipo della variabile dipende da ciò che è stato assegnato;
- le variabili, prima di essere state assegnate, hanno valori predefiniti.

Esempi di assegnazioni: $pi= 3,14159; $pi=3 + 0.14159; $pi="3 + 0,14159";
Una variabile può essere riassegnata nel corso del programma anche cambiandone il tipo.
Una variabile non assegnata se utilizzata in un contesto numerico assumerà il valore 0 se utilizzata in un contesto che richiede un valore di tipo stringa assumerà il valore di stringa vuota.
Per verificare se una variabile è stata utilizzata è possibile utilizzare la funzione, che restituisce un valore booleano, IsSet($nome_var)
$variabile_Settata=0;
$Variabile_non_settata == $variabile_Settata //restituisce vero
IsSet($variabile_Settata) restituisce True
IsSet($Variabile_non_settata) restituisce False
E' possibile utilizzare la funzione unset($nome_var) per riportare una variabile allo stato di non assegnata. L'ambito di visibilità delle variabili è l'intera pagina escluse le funzioni.


LE COSTANTI
Le costanti sono particolari variabili che non possono essere riassegnate ovvero assumono un unico valore per tutto il loro ciclo di vita. I nomi delle costanti non iniziano con '$' e sono scritte in lettere maiuscole. Hanno un ambito di visibilità globale (anche se dichiarate all'interno di funzioni); possono contenere solo valori scalari (numeri e stringhe).
Per definire una costante utilizzo la funzione define() nel seguente modo: define(NOME_COST,valore).


CONVERSIONI DI TIPI
PHP converte in modo automatico tipi diversi utilizzati in un'unica espressione.
Es. $pi=3+0.1415; l'intero 3 viene convertito in modo automatico a numero in virgola mobile prima di eseguire la somma.
$SubS=substr(12345,2,2); substr è una funzione che, ricevendo in ingresso una stringa, una posizione ed il numero di caratteri, restituisce il numero di caratteri specificati della stringa a partire dalla posizione richiesta. La funzione non genera un errore anche se il primo argomento non è una stringa ma un numero che viene convertito in modo automatico.


I TIPI
PHP ha otto tipi diversi: interi, doppi, booleani, stringhe, array, oggetti, NULL e risorse.
- Interi: numeri decimali senza la virgola;
- doppi: numeri a virgola mobile;
- booleani: assumono i valori true o false;
- NULL ha un unico valore;
- stringhe sono sequenze di caratteri comprese fra doppi apici ("questa è una stringa");
- array sono serie di valori nominate ed indicizzate;
- oggetti sono istanze di classi definite dal programmatore
- risorse sono variabili speciali che mantengono riferimenti a risorse esterne (es. connessioni a database).


I primi cinque tipi sono tipi semplici, i successivi di tipo composto.
Gli interi sono i tipi più semplici e corrispondono a numeri interi positivi o negativi. Possono essere utilizzati in forma decimale (predefinito), in base ottale inserendo come prima cifra lo zero (0234) e esadecimale anteponendo al numero '0x' ( 0x12E). La lunghezza dei numeri dipende dalla parola dei calcolatori.
I doppi sono numeri a virgola mobile (123.45 oppure 0.12 oppure 3.0). I tipi doppi e interi si possono utilizzare nella stessa espressione lasciando a PHP il compito di effettuare le opportune conversioni. I numeri doppi possono essere rappresentati anche utilizzando la notazione scientifica (5.3e-3 oppure 12.5e12).
I booleani sono valori veri o falsi. Sono definite due costanti TRUE e FALSE. Anche i tipi non booleani possono essere intrepretati come true o false:
- numero=0 è true, numero !=0 è false;
- stringa vuota o "0" è false negli altri casi true;
- valori NULL sono false;
- tipo composto (oggetto o array) che non contiene valori è false altrimenti è true.;
- risorse valide sono true.
La costante NULL (scritta in maiuscolo) ha un solo valore che rappresenta la mancanza di un valore. Assegnare ad una variabile il valore NULL la rende indistinguibile da una variabile non dichiarata. In un contesto booleano viene valutata come false, restituisce false quando testata con IsSet().
Le stringhe sono sequenze di caratteri racchiuse fra apici singoli (') o doppi ("). Gli apici singoli permettono di trattare le stringhe letteralmente (se stampo la variabile $stringa=' questa è la variabile $MiaVariabile', non stamperà il valore di $MiaVariabile ma il testo stesso). Le uniche sequenze di caratteri speciali che vengono interpretate sono \\ e \' che servono per inserire nel testo una \ e il carattere '.
Le stringhe fra doppi apici vengono pre-elaborate da PHP individuando e sostituendo le variabili con il loro valore e le sequenze di escape con il loro significato.
Le sequenze di escape sono:
- \n nuova riga;
- \r a capo
- \t tabulazione
- \$ simbolo del dollaro
- \" simbolo "
- \\ simbolo di \


OUTPUT
Per visualizzare qualche cosa nel browser, possiamo utilizzare le funzioni (in realtà sono costruzioni elementari e quindi possono essere utilizzate senza parentesi) print e echo.
Echo stampa una stringa come argomento:
echo "questa è una stringa";
echo("questa è una stringa");
echo "stampa stringa1","stringa2;
ma NON echo ("stampa stringa1","stringa2);
print è molto simile ad echo con le seguenti differenze:
- print accetta un unico argomento;
- print restituisce un valore che indica il successo dell'operazione (1 successo, 0 insuccesso).



DIRAMAZIONI
La principale struttura per le diramazioni utilizzata è la if-else che ha la seguente sintassi:
if (condizione)
{
..istruzioni da eseguire nel caso la condizione sia vera.. }

else
{
..istruzioni da eseguire nel caso la condizione sia falsa.. }
La condizione valutata (deve essere inserita fra parentesi tonde) deve dare un risultato vero o falso, le eventuali parentesi graffe individuano un blocco di istruzioni.
Le dichiarazioni if possono essere annidate; per una serie di controlli a cascata annidati può essere utilizzata anche elseif:
if ($numero==4)
print("quattro");
elseif ($numero==5)
print("cinque");
elseif ($numero==6)
print(sei");
Per diramazioni multiple si può utilizzare il costrutto decisionale switch:

switch(espressione)
{
case valore1:
istr1;
istr2;
[break;]
case valore2:
istr3;
istr4;
[break;]
case valore3:
istr5;
istr6;
[break;]
[default: istr7;] }

Esempio:

switch(numero)
{
case 4:
print ("quattro");
break;
case 5:
print ("cinque");
break;
case 6:
print("sei");
break;
default: print(" numero non compreso fra 4 e 6");
}
In questo caso viene valutata l'espressione ed eseguito il codice associato al risultato della stessa fino all'istruzione break o fino alla fine dello switch. Nel caso non venga trovato il valore dell'espressione, vengono eseguite le istruzioni relative alla parte default. Tutto ciò che è compreso
fra parentesi quadre è opzionale. Se l'istruzione break viene omessa, vengono esaminati tutti i casi dello switch anche se è stato trovato uno corrispondente all'espressione.


OPERATORI DI CONFRONTO
== uguaglianza
>= maggiore o uguale
<= minore o uguale
!= diverso
< minore
> maggiore



OPERATORI LOGICI
! diverso
|| o or or
&& o and and



OPERATORI ARITMETICI
+ addizione
- sottrazione
* prodotto
/ divisione
% modulo o resto




FUNZIONI MATEMATICHE
exp() funzione esponenziale
is_nan() verifica se un dato non è un numero
log() logaritmo naturale
pi() restituisce il valore di pigreco
pow(base,esp) elevamento a potenza
round() arrotonda un numero non intero
sqrt() radice quadrata




srand() inizializza il generatore di numeri casuali
rand() genera un numero casuale
ceil() arrotonda le frazioni all'intero superiore
floor() arrotonda le frazioni all'intero inferiore


I CICLI
I cicli si distinguono in cicli con limiti (eseguiti un numero prefissato di volte es. for) e cicli senza limiti (eseguiti fino al verificarsi di una condizione es. while, do-while).
La sintassi del ciclo for (per) è la seguente:
for(espressione iniziale; condizione di fine; espressione di ciclo)
es for (i=0; i<10; i++) oppure (for (i=10;i>0; i--)
Nel ciclo, viene fissata una condizione di partenza (espressione iniziale), ad ogni ciclo viene esaminata la condizione di uscita (condizione di fine) e aggiornata l'espressione (espressione di ciclo). Il for esegue ciclicamente una istruzione o più istruzioni se racchiuse fra parentesi graffe.
Il ciclo while (mentre) è un ciclo con la verifica della condizione di continuazione all'inizio (dunque può non essere mai eseguito) la cui sintassi è la seguente:
while (condizione)
{
istruzioni;}
Il ciclo valuta la condizione booleana ed esegue le istruzioni finchι la condizione non diventa falsa.
Il ciclo do-while (fai mentre) è un ciclo simile al while ma la verifica della condizione viene effettuata alla fine come da seguente sintassi:
do
{
istruzioni;
}while(condizione)
Il ciclo viene ripetuto, almeno una volta, fino a quando la condizione diventa falsa.




LE FUNZIONI
Una funzione permette di raggruppare del codice e di richiamarlo con un solo nome.
La sintassi prevede che venga utilizzata la parola riservata "function" seguito dal nome della funzione (non case sensitive), dall'elenco dei parametri (possono anche non esserci) e dal corpo della funzione;
function nome_funzione (argomento 1, argomento2 …)
{ istruzioni della funzione;
[return valore;]
}
Le funzioni possono restituire un valore o eseguire solamente delle istruzioni. Nel primo caso il codice viene eseguito fino all' istruzione "return", nel secondo caso fino all'ultima istruzione. In ogni chiamata ad una funzione il numero dei parametri deve corrispondere a quanto dichiarato; i parametri possono essere variabili, numeri o espressioni.
es
function AreaQuadrato ($lato)
{ return $lato*$lato;
}
function Scrivi($valore)
{ print("il vlore passato è $valore");
}
Le variabili definite nella funzione sono visibili solamente dall'interno della stessa. Nel corpo della funzione possono essere utilizzate le variabili ivi definite, i parametri passati e le variabili globali ($_POST, $_SESSION..).



FUNZIONI PER LE STRINGHE
Operatore concatenazione '.':
$var_stringa1 . "testo stringa"; questa operazione concatena il valore della variabile $var_stringa1 con la stringa costante "testo stringa".
Lunghezza
strlen ($var_stringa); strlen("testo della stringa"); restituiscono la lunghezza della stringa passata come argomento alla funzione strlen ( string lenght).
Ricerca caratteri
strpos($var_stringa,'carattere_da_cercare');
La funzione restituisce la posizione della prima occorrenza, nella $var_stringa del carattere da cercare. Es
$stringa="Questo è un testo qualunque";
strpos($stringa,'q'); restituisce il valore 18 ovvero la posizione della prima 'q' nella stringa (la prima posizione è 0).
La funzione strpos può essere utilizzata anche per cercare una sequenza di caratteri.
Per ricerche partendo da destra, si può utilizzare, in modo analogo, strrpos (la 'r' centrale sta per reverse) il secondo argomento deve essere di un solo carattere.
Confronto
Per confrontare le stringhe si possono utilizzare i classici operatori di confronto (==,<,>) che tengono conto delle maiuscole oppure la funzione strcmp(str1,str2) che restituisce 0 se le stringhe sono uguali, un numero negativo se la prima stringa è maggiore della seconda oppure un numero positivo in caso contrario. Per non considerare la differenza fra maiuscole e minuscole si utilizza strcasecmp(str1,str2).
Ricerca
Con la funzione strstr($str1,$str2) posso cercare $str2 in $str1, se la ricerca dà esito positivo, verrà restituita la parte di $str1 a partire (compresa) dalla prima occorrenza di $str2.
Es $str1="Questa è uno strano esempio di stringa";
strstr($str1,"str"); restituisce la stringa "strano esempio di stringa".
Anche questa funzione ha una versione insensibile alle maiuscole stristr() (dove i sta per insensible).
Sottostringhe
La funzione utilizzata per selezionare una sottostringa è substr($stringa_orig, $pos_iniziale, $caratteri_da_prelevare).
Es substr("Questa è la solita stringa di prova",4,7);
preleva dalla stringa 7 caratteri a partire dalla posizione 4 ovvero "ta è la". Eventuali argomenti negativi significano che le posizioni sono individuate a partire dalla fine della stringa.
Es
$alfabeto="abcdefghijklmnop";
substr($alfabeto,3) ?"defghijklmnop"
substr($alfabeto,-3) ? "nop"
substr($alfabeto,3,5) ? "defgh"
substr($alfabeto,3,-5) ? "defghijk"
substr($alfabeto,-3,5) ? "nop"
Pulizia delle stringhe
Le funzioni ltrim(),chop()e trim() eliminano gli spazi ristettivamente all'inizio, alla fine e da entrambe le parti della stringa passata come argomento.
Sostituzioni di stringhe
La funzione str_replace(arg1,arg2,arg3) permette di sostituire tutte le occorrenze di arg1 nella stringa arg3 con la stringa arg2.
Es
$so="stringa originale";
$sc="origin";
$ss="di nat";
str_replace($sc,$ss,$so) restituisce "stringa di natale".
La sostituzione avviene per tutte le occorrenze di $sc.
La funzione substr_replace() permette di sostituire una sottostringa, individuata dalla sua posizione, con un'altra stringa.
Es
substr_replace("ABCDEFG","-",2,3)
restituisce AB-FG ovvero i 3 caratteri della stringa originale, a partire della posizione 2, vengono sostituiti con un -. Se la lunghezza viene omessa, si sostituisce tutta la stringa a partire dalla posizione iniziale specificata.
Inversione
La funzione strrev() restituisce una stringa invertita.
Ripetizione
La funzione str_repeat(stringa, num) produce una stringa che contiene num volte la stringa passata come primo parametro.
Maiuscole/minuscole
La funzione strtolower() converte l'intera stringa passata come argomento in minuscolo, strtoupper() restituisce la stringa in maiuscolo, ucfirst() restituisce la stringa con solo la prima lettera maiuscola e ucword() rende maiuscola la prima lettera di ogni parola .

-- SCAMBIO DI INFORMAZIONI FRA PAGINE --

METHOD POST
//file pagina con form modulo.html
<html>
<head>
<title>Pagina con form</title>
</head>

<body>
<h1>Prova elaborazione valori di input </h1>
<form action="ela.php" method="post">
Casella di testo <input type="text" name ="testo">
<br /><br />
Sesso <input type="radio" name="sex" value="M" /> M
<input type="radio" name="sex" value="F" /> F
<br /><br />
Seleziona il colore
<select name="combinata">
<option value="rosso"> colore rosso </option>
<option value="verde"> colore verde </option>
<option value="giallo"> colore giallo </option>
</select>
<br /><br />

Seleziona gli optional
<!-- l'attributo name è uguale per tutti i checkbox, le parentesi finali stanno ad indicare che il risultato della selezione sarà inserito in un vettore -->
<input type="checkbox" name="optional[]" value="CerchiInLega" /> Cerchi in lega
<input type="checkbox" name="optional[]" value="Fendinebbia" /> Fendinebbia
<input type="checkbox" name="optional[]" value="Radio" />
Autoradio
<br /><br />
<input type="submit" value="elabora">
</form>
</body>
</html>

//sorgente del fil ela.php
<html>
<head>
<title>Pagina che elabora i dati</title>
</head>

<body>
<?php
//recupero dei dati inseriti nel modulo della pagina precedente
$txt=$_POST['testo'];
$opz=$_POST['sex'];
$comb=$_POST['combinata'];
$chk=$_POST['optional'];

print("<h1> Dati recuperati dal modulo della pagina precedente </h1>");
print ("Il contenuto della casella di testo è: $txt <br /> ");
print("Il sesso è: $opz <br />");
print("Il colore selezionato è: $comb <br />");
print("Le checkbox selezionate sono: <br />");

//assegno alla variabile $N il numero di elementi contenuti nel vettore $chk
$N = count($chk);
for ($i=0; $i<$N; $i++)
print(" ". $chk[$i]. "<br />");

?>
</body>
</html>


Torna su
DPD- 2013