Il linguaggio HTML e i linguaggi di scripting come Javascript

PHP
Il linguaggio HTML e i linguaggi di scripting come Javascript impongono alcune limitazioni alle applicazioni che si possono
realizzare : per esempio non è possibile costruire un sito Web che consenta all’utente di accedere ai dati contenuti in un
database. Questi tipi di linguaggi svolgono quindi la loro funzione dal lato client di un’architettura Web (client-side).
Un’architettura Web è composta da due parti che interagiscono fra di loro :
 Il lato client (client-side)
 Il lato server (server-side)
Una pagina Web scritta usando Html e/o Javascript , rappresenta un file di testo che è memorizzato in una particolare cartella
sui server. Quando il browser Web richiede una pagina, cioè quando l’utente scrive l’indirizzo o attiva un link, viene inviata una
richiesta al server Web. Questi la interpreta ricavando il nome del file che è stato richiesto, recupera il file dal proprio disco e lo
restituisce senza modifiche al client. Il browser Web riceve una copia del file e la visualizza, interpretando i tag html e
considerando le parti di codice scritte in Javascript , eseguendole al momento opportuno.
Per poter interagire con i dati che si trovano sul server remoto occorrono strumenti server-side.
PHP è un linguaggio di scripting server side HTML embedded ovvero è un linguaggio di programmazione con il quale si possono
scrivere programmi (script) capaci di girare sul server ( cioè programmi interpretati dal server) integrati all’interno di un codice
HTML.
Un linguaggio di questo tipo si è reso necessario in quanto l’HTML ( senza Javascript, senza CSS) consente esclusivamente di
realizzare pagine statiche e , integrato con CSS e Javascript , al massimo pagine che presentano un certo grado di interattività
per l’utente. L’esigenza attuale è invece quella di creare pagine dinamiche il cui contenuto non è prevedibile né previsto a priori,
ma può essere anche modificato dall’utente o prelevato da informazioni presenti sul server (tipicamente in un database). Si
vuole, cioè, non creare semplici siti Web, ma vere e proprie applicazioni Web (esempi : motore di ricerca, carrello della spesa,
chat, web forum, registrazione di un utente, ecc).
Esistono altri linguaggi che realizzano le stesse funzionalità, ma PHP si fa preferire perché è open source e free, meno complesso
delle altre soluzioni (ASP,PERL), si interfaccia con i DBMS più importanti (MYsql) e si integra con altre componenti Microsoft
quali oggetti creati con Flash.
PHP è un linguaggio di programmazione che viene interpretato dal Web server tramite l’aggiunta di un modulo esterno
(l’interprete PHP). Quando il client richiede una pagina con estensione .php (che conterrà HTML + PHP) il server Web non
spedisce al browser direttamente il file, ma prima interpreta le istruzione scritte in PHP, recupera gli eventuali dati richiesti
prelevandoli, ad esempio, da un database del server e in seguito restituisce una pagina Web visualizzabile dal browser. Poiché
questa pagina è costruita al momento della richiesta, si chiama pagina dinamica oppure pagina Web lato server.
PHP (Hypertext Preprocessor)è un software che può essere liberamente installato e utilizzato. (www.php.net). Esistono versioni
per Windows e Linux e per i più diffusi server Web (Apache e Microsoft IIS). In fase si sviluppo è importante disporre di ambienti
integrati che forniscono un Web server locale Apache con PhP e un server Mysql per i database (Easyphp … www.easyphp.org ).
Di questi software esiste anche una versione portable che può essere attivata direttamente da una chiavetta Usb. In questo
modo il programmatore PHP può collaudare le pagine Web utilizzando un Web server di sviluppo sul proprio computer locale.
1
Struttura di un programma PHP
Il codice PHP deve essere racchiuso fra il tag <?php e il tag ?>
Ogni istruzione deve essere chiusa dal ; PHP è case sensitive.
I commenti :
una sola riga  iniziare la riga con
Più righe  iniziare con
// o #
/* e chiudere con */
Dopo aver creato il file di testo lo si salva con estensione .php. Il linguaggio Php consente di includere piccoli programmi (script)
all’interno di una pagina web dove sono presenti i marcatori HTML. Il codice contenuto nella pagina Web viene interpretato dal
server Web per costruire dinamicamente la pagina da spedire al browser dell’utente. Quando viene richiesta una pagina con
estensione .php il comportamento del server web è il seguente :



Legge il file di testo riga per riga
Se trova i marcatori Html li spedisce al browser
Se trova i blocchi di codice php ne esegue l’interpretazione e restituisce i risultati al browser che quindi non riceve il
codice php ma solo il risultato dello script sotto forma di pagina web dinamica, che contiene il codice con i tag del
linguaggio Html.
I principali vantaggi di una pagina php sono :





Rende più veloce la creazione e lo sviluppo di applicazioni web
Facilita la fase di manutenzione e aggiornamento delle applicazioni
I suoi script sono compatibili con diverse piattaforme
Include la possibilità di accedere a diversi tipi di database
Appartiene alla categoria del software libero e viene continuamente aggiornato
2
ESEMPIO
Creiamo un file numeri casuali.php
<html>
<head><title>Numeri casuali </title></head>
<body>
<h1>Numeri generate </h1>
<?php
//genera tre numeri casuali da 1 a 90
$num1=rand(1,90);
$num2=rand(1,90);
$num3=rand(1,90);
echo "$num1"."<br>";
echo "$num2"."<br>";
echo "$num3"."<br>";
?>
</body>
</html>
La funzione echo invia una stringa al browser e il carattere punto è il carattere di concatenazione.
Quando il browser attiva il collegamento con numeri casuali.php , il server web legge il file ed invia la browser il contenuto. Nel
momento in cui capisce che è presente uno script in php, richiama l’interprete ed esegue il codice. Per effetto di queste azioni il
browser visualizza :
Se si clicca sul pulsante Aggiorna del browswer vengono
visualizzati altri valori cioè la oagina Web è dinamica
perché generata in modo diverso ogni volta che riceve una
richiesta dal browser.
E’ possibile sapere cosa viene restituito al browser per effetto dell’interazione con l’interprete PHP visualizzando il codice Html
della pagina (ad esempio con Internet Explorer – visualizza – origine; con Mozilla – sviluppo web – sorgente pagina)
3
Variabili
E’ consentita, ma non obbligatoria, la definizione delle variabili utilizzate nel programma.
Le variabili iniziano con il simbolo $ seguito da un nome che deve iniziare con una lettera dell’alfabeto, seguito da una qualsiasi
combinazione di lettere, numeri e _.
Se una variabile non viene dichiarata, PHP attribuisce ad essa il tipo in dipendenza del valore che le viene assegnato.
Es. $nome = “Ugo” è una variabile di tipo stringa ( si possono racchiudere tra apici singoli o doppi); $eta = 18 è una variabile di
tipo intero(massimo 2 miliardi); $media = 6.5 è una variabile di tipo double , $ok = false è una variabile di tipo boolean( e questi
sono anche i quattro tipi di dati trattati da PHP)
Inoltre PHP è in grado di effettuare automatiche conversione di tipo : se una variabile intera è coinvolta in una concatenazione di
stringhe, viene trasformata in stringa e , viceversa, se una variabile stringa viene coinvolta in un’operazione matematica viene
trasformata in numero. (se non è un numero lo sostituisce con zero)
Le variabili possono essere definite internamente al codice o passate dall’esterno attraverso form o come parametri nel
richiamo della pagina (vedremo meglio più avanti)
Operatori



* / %(modulo = mod Pascal) + - (in ordine di priorità)
Logici : ! (not) &&(and) ||(or) (in ordine di priorità)
Alfanumerici : . (concatenazione) ; Es : “Ciao”.$utente.” come stai?”
Matematici :
Si può tuttavia scrivere anche “Ciao $utente come stai?”

Relazionali :
< > == (uguale) <= >= != (diverso)
Esiste anche la possibilità di abbreviare gli operatori. Vediamo alcuni esempi
 $i++  $i = $i+1
 $i--  $i = $i-1
 $a* = $b  $a = $a*$b
 $a+=3  $a=$a+3
 $a.=’Ciao’  Al contenuto della variabile a (stringa) concatena la parola Ciao
Array :
Un’array in Php è una variabile che può contenere un insieme di valori identificati da un indice. Non vengono dichiarati ma creati
mediante assegnazioni. Se si usa come indice un numero di parla di array numerici, mentre se si usa come indice una stringa si
parla di array associativi. Per accedere al valore di un elemento di un array si utilizza il nome della variabile seguito dall’indice
dell’elemento racchiuso tra parentesi quadre. Negli array Php i dati possono anche non essere omogenei. Negli array numerici
l’indice parte da 0. Negli array associativi l’indice è una stringa racchiusa tra doppi apici. (assomiglia alla struttura di record)
Esempio : $voti = array(8.0,6.5,5.5,7.0);
$dati = array(30, “Roma”, 12.7, true, null);
Variabili predefinite
In Php ne esistono molte e sono disponibili per gli script durante l’esecuzione.
$_SERVER : contiene le variabili passate allo script dal lato server
$_COOKIE : contiene le variabili passate allo script tramitei cookie
$_SESSION : contiene le variabili utilizzate per implementare il concetto di sessione
Si tratta di array associativi quindi bisogna usare delle parole per accedere ai loro valori :
$_SERVER [‘REMOTE_ADDR’] : contiene l’indirizzo IP da cui proviene la richiesta di esecuzione dello script ovvero l’indirizzo IP
della macchina utente
$_SERVER[‘SERVER_SOFTWARE’] : contiene il nome del server Web che esegue lo script
$_SERVER[‘HTTP_USER_AGENT’] : contiene una stringa con il nome del browser utilizzato dall’utente
$_SERVER[‘SERVER_NAME’] : contiene il nome della macchina su cui gira il server web
$_SERVER[‘PHP_SELF’] : contiene il nome dello script in esecuzione
Obbligatorio scrivere in maiuscolo i nomi delle variabili
Le precedenti informazioni possono essere utilizzare per registrare gli accessi al server, attraverso i cosiddetti file log e per
produrre successivamente le statistiche relative ai visitatori (da dove si collegano e quale browser web utilizzano)
4
Istruzioni
Sequenza : è sufficiente scrivere le istruzioni una di seguito all’altra (meglio su righe diverse) separate dal ;
Alternativa semplice :
 If (condizione) istruzione;
 If (condizione) {
istruzione;
istruzione;
};
 If (condizione) {
istruzione;
istruzione;
};
else
{
istruzione;
istruzione;
};
Le graffe svolgono il ruolo del begin..end in Pascal
Alternativa multipla : (simile al case … default = else)
 switch (variabile) {
case valore:
istruzione;
istruzione;
…
break;
case valore:
istruzione;
istruzione;
…
break;
default:
istruzione;
istruzione;
…
break;
};
Iterativa per vero :
 while (condizione) {
istruzione;
istruzione;
};
Iterativa per falso :
 do {
istruzione;
istruzione;
} while (condizione);
Iterativa enumerativa :
 for (valoreiniziale;condizione;incremento) {
istruzione;
istruzione;
};
5
Istruzioni di Input/output
Output :
 print nomevar; oppure print ‘stringa’;
 echo nomevar; oppure echo ‘stringa’;
È opportuno ricordare che il dato da inviare al browser che segue il comando echo può essere racchiuso tra parentesi e che al
comando possono essere date in input più stringhe separate da virgole, così:
echo "Buongiorno a tutti!", "<br />\n", "È una bellissima giornata";
Se si decide di utilizzare il separatore virgola, non possono essere utilizzate le parentesi. Il simbolo \n ha una funzione
abbastanza importante nella programmazione e nello scripting che serve più che altro per dare leggibilità al codice HTML che
stiamo producendo. Infatti PHP, quando trova questa combinazione di caratteri fra virgolette, li trasforma in un carattere di
ritorno a capo: questo ci permette di controllare l'impaginazione del nostro codice HTML. Bisogna però stare molto attenti a non
confondere il codice HTML con il layout della pagina che l'utente visualizzerà sul browser: infatti, sul browser è solo il tag <br />
che forza il testo ad andare a capo.
Esempio 1
<?php
echo "prima riga\n";
echo "seconda riga<br />";
echo "terza riga";
?>
Questo codice php produrrà il seguente codice HTML:
prima riga
seconda riga<br />terza riga
mentre l'utente, sul browser, leggerà:
prima riga seconda riga
terza riga
regole importanti da ricordare quando si usano le stringhe delimitate da apici o virgolette:
può capitare che una stringa debba contenere a sua volta un apice o un paio di virgolette; abbiamo bisogno di un sistema per far
capire a PHP che quel carattere fa parte della stringa e non è il suo delimitatore. In questo caso si usa il cosiddetto 'carattere di
escape', cioè la barra rovesciata (backslash: \). Vediamo alcuni esempi:
<?php
echo 'Torniamo un\'altra volta'; // stampa: Torniamo un'altra volta
echo "Torniamo un'altra volta"; // stampa: Torniamo un'altra volta
echo "Torniamo un\'altra volta"; // stampa: Torniamo un\'altra volta
echo 'Torniamo un'altra volta'; // causa un errore, perchè l'apostrofo viene scambiato
per l'apice di chiusura
echo 'Anna disse "Ciao" e se ne andò'; // stampa: Anna disse "Ciao" e se ne andò
echo "Anna disse \"Ciao\" e se ne andò"; // stampa: Anna disse "Ciao" e se ne andò
echo 'Anna disse \"Ciao\" e se ne andò'; // stampa: Anna disse \"Ciao\" e se ne andò
echo "Anna disse "Ciao" e se ne andò"; // errore
?>
<?php
6
Input
Una delle caratteristiche più importanti di tutti i linguaggi di scripting è data dalla possibilità di interagire con l’utente che utilizza
una pagina Web. Con il linguaggio Php l’interazione avviene nel momento in cui l’utente invia una richiesta al server Web :
quest’ultimo genera come risposta, attraverso PHP, una pagina web dinamica. L’interazione con l’utente avviene aggiungendo
particolari informazioni alla richiesta di pagina web, un modo di procedere simile al passaggio di parametri nelle
procedure/funzioni. L’interazione con l’utente può essere gestita attraverso i form dell’Html che permettono la costruzione di
un’interfaccia grafica costituita da caselle di testo, pulsante, check box, option button, ecc.
Tramite questa interfaccia l’utente può inserire i valori ed inviarli al server web come parametri dello script.
Esempio :
<form action =”cerca.php” method = “get”>
Parola : <input type =”text” name = “parola”>
<input type =”submit” value “Cerca”>
</form>
Quando si fa clic sul pulsante con l’etichetta Cerca, il browser richiama lo script php Cerca indicato in action e aggiunge
automaticamente alla richiesta tutti i campi presenti nel modulo. Per ogni campo crea un parametro avente come nome il nome
del campo indicato dall’attributo name e come valore quello inserito dall’utente. L’attributo method del form html ha il compito
di indicare al browser quale modalità deve utilizzare per inviare i campi del modulo al server web. Sono disponibili due modalità
:
 get : i parametri vengono codificati automaticamente dal browser all’interno dell’indirizzo e vengono visualizzati
insieme all’URL della pagina erb. Questa modalità non è adatta in tutte le situazioni : per esempio non è desiderabile
che una password o una carta di credito siano visualizzati insieme all’indirizzo. Altre volte non è possibile per la
limitazione sulla lunghezza degli indirizzi ( se ad esempio è presente una textarea molto grande). Nel form precedente ,
se l’utente digita Rapallo nella casella di testo il browser richiama il seguente indirizzo di script :
cerca.php?parola=Rapallo
 post : serve per spedire grandi quantità di dati in modo che non siano visibili all’utente.
Una pagina generata da un modulo che ha usato il metodo get può essere salvata nei Preferiti con il corretto valore dei
parametri inseriti, mentre questo non è ovviamente possibile per una pagina che usa il metodo post.
I parametri vengono passati allo script Php per mezzo dell’array associativo $_GET , nel caso di parametri passati col metodo get,
e per mezzo dell’array associativo $_POST se i parametri sono passati col metodo post.
Quindi all’interno del codice PHP, nell’esempio precedente, per accedere al valore inserito dall’utente si farà riferimento a
$_GET[“parola”]
Lettura e scrittura di un file di testo
Apertura del file :
fopen(nomefisicodelfile, modalità di apertura) dove le modalità di apertura possono essere r : lettura; w: scrittura; a: scrittura in
coda di dati esistenti
Esempio fopen(http://www.mioserver.com/prove/dati.txt,”r”)
All’interno dello script il nome del file si identifica con $file
Chiusura del file : fclose($file)
Lettura di un file :
fgets($file, lunghezza della stringa di caratteri da leggere) ; legge una linea del file ; se non si specifica la lunghezza legge fino al
primo ritorno a capo
Scrittura di un file :
fwrite($file, contenuto della stringa di caratteri da scrivere) : se si usa la sequenza “\n” si inserisce un ritorno a capo
Test di fine file :
feof($file) se true finito il file
7
Accesso ai database
Mysql è un programma server che si occupa della gestione di una base di dati. Ne vogliamo studiare l’interazione con il Php. In
un sito Web dinamico i dati risiedono in un database sul server gestito da mysql e, ogni volta che un utente ne fa richiesta,
questi dati vengono recuperati e mostrati nelle pagine web realizzate sul server tramite html e inviate al browser dell’utente
client. Le due parti dell’applicazione Web , lato server e lato client, si collegano usando gli script in Php che svolgono i seguenti
compiti :


connessione al database MySQL, invio dei comandi Sql e acquisizione delle risposte
scrittura dei dati ricevuti dal database all’interno di pagine Web in formato html, in modo che siano interpretate dal
browser dell’utente
In dettaglio :






Il browser Web effettua una richiesta di una pagina web in formato Php
Il server Web riconosce che la richiesta fa riferimento a un file con estensione php e quindi attiva l’interprete Php per
eseguire gli script in essa contenuti
Lo script php contiene i comandi per collegarsi al database MySQL e inviare le richieste tramite i comandi Sql
Il server MySQL risponde restituendo i dati richiesti
Lo script Php scrive questi dati all’interno di una pagina Web e la restituisce al server Web
Il server Web invia al browser dell’utente la pagina richiesta in formato html generata in modo dinamico dallo script
php
In uno script Php che deve accedere al database sul server occorre per prima cosa definire la variabili per :





Il nome del server: $host (in locale si indica localhost)
L’identificativo di accesso al server : $username
La password di accesso al server : $password
Il nome del database : $db_name
Il nome della tabella : $tbl_name
La prima operazione da effettuare è la connessione con il server MySQL :
mysql_connect(nome server,nome utente, password)
La funzione restituisce un valore $conn che corrisponde all’identificativo della connessione nel caso in cui la connessione abbia
avuto successo. Se non è stata in grado di aprire la connessione viene restituito un valore falso che viene utilizzato per
interrompere l’esecuzione e mostrare un messaggio di errore. (si usa il comando die per interrompere…si può far vedere anche
mysql_error())
La connessione viene chiusa alla fine dello script con mysql_close()
La seconda operazione seleziona il db tramite la funzione mysql_select_db(nomedb,connessione). Restituisce un valore
true/false che permette di controllare se l’operazione ha avuto successo.
A questo punto è possibile interagire con il db tramite i comandi Sql.. La funzione Php che consente di inviare comandi sql è
mysql_query(stringasql) che restituisce un array $result che corrisponde alle righe selezionate nella tabella e posiziona il
puntatore dei dati all’inizio dell’array.
Per esaminare i risultati si usa mysql_fetch_array($result) che restituisce in $row una riga della tabella.
8
In sintesi
<?php
$host = "localhost";
$username = "root";
$password = "meticela";
$db_name = "cinema";
$tbl_name = "attore";
$conn = mysql_connect($host,$username,$password) ;
If (!$conn)
{die('errore di connessione : '.mysql_error());}
echo "connessione riuscita"."<br>";
$acc = mysql_select_db($db_name);
if (!$acc)
{die ('errore di connessione al db : '.mysql_error());}
echo "connessione al db riuscita"."<br>";
$sql = "select * from $tbl_name";
$result = mysql_query($sql);
$conta = mysql_num_rows($result);
echo "numero attori = "."$conta"."<br>";
$row = mysql_fetch_array($result);
while ($row )
{
echo $row['nomeattore'];
echo "<br>";
$row = mysql_fetch_array($result);
}
?>
<head><title>Informazioni sulla connessione</title></head>
<body>
Il tuo indirizzo IP :
<?php
$nome = $_SERVER['REMOTE_ADDR'];
echo "$nome"."<br>";
?>
Il tuo browser Web :
<?php
$nome = $_SERVER['HTTP_USER_AGENT'];
echo "$nome"."<BR>";
?>
Il tuo server Web :
<?php
$nome = $_SERVER['SERVER_SOFTWARE'];
echo "$nome"."<BR>";
?>
Il tuo server :
<?php
$nome = $_SERVER['SERVER_NAME'];
echo "$nome","<BR>";
?>
</body>
</html>
9