Una breve guida a PHP: linguaggio di programmazione lato server

Una breve guida a PHP: linguaggio di programmazione lato server


main.zip (2010 download )

Sommario

Introduzione al ruolo di PHP nel Web

I linguaggi come HTML e JavaScript consentono di realizzare pagine web interattive, ma presentano importanti limitazioni quando si parla di accesso ai dati memorizzati su un server, come quelli contenuti in un database. Questi linguaggi operano infatti lato client, cioè all’interno del browser dell’utente, e non sono in grado di interagire direttamente con le risorse del server.

Per superare questi limiti è necessario utilizzare tecnologie lato server, capaci di elaborare richieste, accedere ai database e generare dinamicamente le pagine web da inviare al browser. PHP rientra proprio in questa categoria.

PHP è uno dei linguaggi server-side più diffusi e rappresenta una scelta particolarmente adatta per comprendere i meccanismi fondamentali delle applicazioni web dinamiche, motivo per cui viene ampiamente utilizzato nei percorsi di studio dell’indirizzo Informatica e Telecomunicazioni.


Cos’è PHP e come funziona sul server

PHP (acronimo ricorsivo di PHP: Hypertext Preprocessor) è un linguaggio di scripting progettato per estendere le funzionalità del web server. Quando un browser richiede una pagina con estensione .php, il server non invia direttamente il file, ma attiva l’interprete PHP per eseguire il codice contenuto nello script.

pagina web lato server
pagina web lato server

PHP è un linguaggio interpretato: il codice sorgente viene analizzato ed eseguito istruzione per istruzione tramite un motore software chiamato Zend Engine, introdotto con PHP 4. Questo motore si occupa dell’analisi sintattica, della compilazione in memoria e dell’esecuzione degli script, oltre alla gestione della memoria e delle estensioni di PHP.

Durante l’esecuzione, lo script PHP viene tradotto in Zend Opcodes, istruzioni di basso livello che producono come risultato finale codice HTML. Solo quest’ultimo viene inviato al browser dell’utente, che non ha mai accesso al codice PHP originale.

zend engine
zend engine

Installazione di PHP sui principali sistemi operativi

PHP è disponibile per tutte le principali piattaforme.

Su Windows è consigliabile utilizzare pacchetti completi come XAMPP, che includono Apache, PHP e MySQL già configurati. In alternativa è possibile scaricare PHP dal sito ufficiale e configurare manualmente il file php.ini.

Su macOS, PHP è spesso preinstallato, ma può essere aggiornato tramite Homebrew utilizzando il comando brew install php.

Su Linux, PHP è disponibile nei repository ufficiali delle distribuzioni e può essere installato tramite il gestore di pacchetti, ad esempio con sudo apt install php.


Primo script PHP: phpinfo()

Nella directory C:\xampp (raggiungibile anche cliccando il tasto explorer dal pannello di XAMPP) c’è la subdirectory htdocs. Essa dovrà contenere tutti progetti realizzati in PHP. Per poter accedere e testare i nostri file dovremo aprire un WEB Browser e digitare nella barra degli indirizzi localhost/nome_progetto/file.php

In htdocs creiamo la cartella test dove inseriremo i nostri file php da testare. Apriamo il nostro editor di testo o un IDE (es. Visual Studio Code) e creiamo il nostro primo script php (file1.php) che consentirà di verificare se PHP sia stato effettivamente installato. Utilizzeremo la funzione phpinfo(). Sotto potete osservare il codice completo. La nostra funzione sarà racchiusa tra <?php  e  ?> che rappresentano i tag di apertura e chiusura di uno script PHP. 

<?php
  phpinfo();
?>

Dopo aver salvato file1.php apriremo il browser e scriveremo nella barra degli indirizzi localhost/test/file1.php. Se l’installazione è andata a buon fine vedremo la pagina Web come nella figura seguente:

phpinfo
phpinfo

Eseguendo uno script con la funzione phpinfo(), il browser visualizza le informazioni sulla configurazione PHP del Web Server.
La funzione phpinfo() è la forma breve del valore standard phpinfo(INFO_ALL). Qualora non sia possibile trovare alcuna versione di PHP, il browser visualizzerà un messaggio di errore oppure il codice PHP verrà consegnato al browser senza che questo sia in grado di interpretarlo.

Secondo script PHP: HelloWorld

Generare output

Una volta verificato il funzionamento di PHP, è possibile produrre output utilizzando il costrutto echo, che consente di inviare testo al browser. Il testo generato può contenere anche tag HTML, che verranno interpretati correttamente dal browser.

Questa caratteristica consente di mescolare codice PHP e HTML all’interno della stessa pagina, rendendo PHP uno strumento ideale per la creazione di pagine web dinamiche.
Creiamo un nuovo script PHP (hello.php) scrivendo il seguente codice:

<?php
  echo "Hello World!";
?>

Salviamo lo script come hello.php nella cartella htdocs/test del Web Server e apriamo il file tramite l’URL http://localhost/test/hello.php sul browser Web. Se il codice è stato trasferito correttamente, nella finestra del browser dovremmo visualizzare:

hello.php

PHP e HTML embedded

Il testo generato può contenere anche tag HTML, che verranno interpretati correttamente dal browser.

Questa caratteristica consente di mescolare codice PHP e HTML all’interno della stessa pagina, rendendo PHP uno strumento ideale per la creazione di pagine web dinamiche:

<?php
    echo '<h1>Hello World!</h1>
    <p>This is my first PHP page.</p>';
?>

Quando viene visualizzato nel browser, il risultato dell’esecuzione dello script appare come qui sotto:

hello2.php
hello2.php

La stringa Hello World! compresa nei tag <h1> viene interpretata dal browser web come un header h1. È seguita da un’interruzione di riga  automatica e dal paragrafo di testo <p>.
A seconda delle esigenze, echo può essere usato con virgolette singole (’) o doppie (“). Se vogliamo emettere solo testo, non fa alcuna differenza la scelta delle virgolette. Ma le cose cambiano quando entrano in gioco le variabili PHP.

Pagine dinamiche ed esempio dei numeri casuali

Una pagina PHP è considerata dinamica perché il contenuto restituito può variare a ogni richiesta. Un esempio tipico è la generazione di numeri casuali tramite la funzione rand().

Ogni volta che il browser richiede la pagina, lo script viene eseguito nuovamente dal server e produce un risultato diverso. Il browser riceve esclusivamente il codice HTML finale, privo di istruzioni PHP.

Per esempio, per generare un numero casuale compreso tra 1 e 90 si deve usare la funzione nella forma: rand(1, 90):

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <h1>Numeri generati;</h1>
        <?php
            echo rand(1, 90)."<br>";
            echo rand(1, 90)."<br>";
            echo rand(1, 90)."<br>";
        ?>
    </body>
</html>

La pagina PHP è un file di testo che viene salvato sul server con l’estensione .php.

Ogni istruzione può occupare una o più righe e termina sempre con il carattere di punto e virgola (;).

Viene invocata la funzione echo con una stringa come parametro. La stringa può contenere testo e tag HTML, tra virgolette, oppure variabili e funzioni. I diversi elementi sono concatenati tra loro con l’operatore punto (.).

Nelle istruzioni precedenti si usa il tag <br> per inserire un ritorno a capo dopo la visualizzazione di un numero.

Quando il browser attiva il collegamento con numericasuali.php, il server Web legge il file e invia al browser il contenuto. Nel momento in cui capisce che è presente uno script in linguaggio PHP, richiama l’interprete ed esegue il codice. Per effetto di queste azioni il browser visualizza la pagina:

numericasuali.php
numericasuali.php

Facendo clic sul pulsante Aggiorna del browser, vengono visualizzati valori diversi per i tre numeri casuali, cioè la pagina Web è dinamica, perché viene generata in modo diverso ogni volta che riceve una richiesta dal browser.

Per conoscere cosa viene effettivamente restituito al browser, per effetto dell’interazione con l’interprete PHP, occorre visualizzare il codice HTML della pagina (tasto destro del mouse sulla pagina, scelta HTML in Internet Explorer e scelta Visualizza sorgente pagina in Chrome, oppure scorciatoia da tastiera Ctrl + U). Il risultato di questa operazione è mostrato nella figura in basso:

pagina web dinamica
pagina web dinamica

La pagina Web ricevuta dal browser non contiene codice PHP, ma solo il codice HTML generato dal server sulla base delle istruzioni PHP.

Variabili e tipi di dato in PHP

In PHP le variabili sono identificate dal simbolo $ e non necessitano di dichiarazione preventiva. Il linguaggio assegna dinamicamente il tipo in base al valore memorizzato. Una variabile può quindi contenere numeri, stringhe, valori booleani, array o oggetti.

<?php   
    $eta = 19; //contiene un intero
    $titolo = "I promessi sposi "// contiene una stringa
    $prezzo = 31.2; // contiene un floating point
?>

Le stringhe possono essere definite con apici singoli o doppi. L’uso dei doppi apici consente l’espansione delle variabili all’interno della stringa, mentre con gli apici singoli il testo viene trattato in modo letterale.

<?php   
    $nome = "Giovanni";   
    $saluto = "Buongiorno $nome";
    // contiene: Buongiorno Giovanni
    echo "$saluto <br>";   
    $saluto = 'Buongiorno $nome';
    // contiene: Buongiorno $nome
    echo "$saluto <br>";
?>
variabili1.php
variabili1.php

PHP, in modo autonomo e dinamico, attribuisce il tipo ad ogni variabile. Il tipo associato a una variabile può variare all’interno dello script; la stessa variabile, quindi, viene considerata un intero se ad essa si associa un numero, oppure viene considerata una stringa se ad essa si associa una stringa di caratteri. I principali tipi di variabile gestiti nel linguaggio PHP sono:

  • numero intero;
  • numero a virgola mobile (floating point);
  • stringa;
  • valori logici;
  • array;
  • oggetto.

Le stringhe possono essere concatenate utilizzando il punto (.), operatore di concatenazione

<?php  
    $nome = "Giovanni";   
    $saluto = "Buongiorno " . $nome; // contiene: Buongiorno Giovanni
    echo "$saluto <br>";  
    $somma = 768;  
    $messaggio = "Totale = " . $somma; // contiene: Totale = 768
    echo "$messaggio <br>";
?>

concatenazione1.php
concatenazione1.php

Con i numeri e le variabili numeriche si possono utilizzare i seguenti operatori:

Gli Array in PHP

In PHP un array è una struttura dati che consente di memorizzare più valori all’interno di una singola variabile, rendendoli accessibili tramite un indice.
Analogamente alle variabili semplici, anche gli array non richiedono una dichiarazione preventiva: vengono creati direttamente nel momento in cui si assegna loro un insieme di valori.

L’indice utilizzato per identificare ciascun elemento dell’array può essere di due tipi:

  • numerico, quando è un numero intero;
  • testuale, quando è una stringa.

Nel primo caso si parla di array numerici, nel secondo di array associativi.
Per accedere a un singolo elemento dell’array si utilizza il nome della variabile seguito dall’indice dell’elemento racchiuso tra parentesi quadre.

Una caratteristica importante di PHP, che lo distingue da molti altri linguaggi di programmazione, è che gli elementi di un array possono essere di tipi diversi. All’interno dello stesso array possono quindi convivere valori numerici, stringhe, booleani e persino valori nulli, senza alcuna restrizione sul tipo.

Gli array numerici

Negli array numerici l’indice è un numero intero che parte automaticamente da 0 e cresce progressivamente. Questo tipo di array è particolarmente indicato quando l’ordine degli elementi è rilevante e non è necessario associare un significato semantico all’indice.

definizione array numerici
definizione array numerici

Gli array associativi

Negli array associativi, invece, l’indice è una stringa, specificata tra doppi apici, che funge da chiave per accedere al valore corrispondente.
Questa struttura è utile quando si vuole associare un significato preciso a ciascun valore, ad esempio nel caso di record, configurazioni o dati strutturati.

array associativi
array associativi

Le funzioni count e var ̲ dump

PHP mette a disposizione numerose funzioni per la gestione degli array. Tra le più utilizzate troviamo:

  • count(), che restituisce il numero di elementi contenuti in un array;
  • var_dump(), che visualizza il tipo di dato e il valore di una variabile passata come argomento.

La funzione var_dump() risulta particolarmente utile in fase di debug, poiché consente di analizzare in modo dettagliato il contenuto delle variabili.

Nell’esempio seguente viene mostrato come:

  • determinare il numero totale di elementi presenti nell’array tramite count().
  • visualizzare il tipo e il valore di ciascun elemento di un array tramite var_dump();
<!DOCTYPE html> 
<html> 
    <head>  
        <title>Array e tipi</title>
    </head> 
    <body>  
        <h2>Array: tipi e valori</h2>   
        <hr> 
        <?php
            $dati = array(30, "Roma", 12.7, true, null);
            echo 'var_dump($dati[0]) = '; 
            echo var_dump($dati[0]) . '<br>';
            
            echo 'var_dump($dati[1]) = '; 
            echo var_dump($dati[1]) . '<br>';
            
            echo 'var_dump($dati[2]) = '; 
            echo var_dump($dati[2]) . '<br>';
            
            echo 'var_dump($dati[3]) = '; 
            echo var_dump($dati[3]) . '<br>';
            
            echo 'var_dump($dati[4]) = '; 
            echo var_dump($dati[4]) . '<br>';
            
            echo '<hr>';
            
            echo 'count($dati) = '; 
            echo count($dati) . '<br>';
        ?>
    </body> 
</html>

array.php

Variabili predefinite e variabili superglobali in PHP

Il linguaggio PHP mette a disposizione un ampio insieme di variabili predefinite, automaticamente disponibili durante l’esecuzione degli script. Tra queste, un ruolo particolarmente importante è svolto dalle variabili superglobali, così chiamate perché sono accessibili da qualsiasi punto del codice, indipendentemente dallo scope in cui vengono utilizzate.

Le variabili superglobali vengono create direttamente dall’interprete PHP e sono organizzate sotto forma di array associativi. I principali sono:

  • $_GET, che contiene i parametri inviati allo script tramite il metodo HTTP GET;
  • $_POST, che raccoglie i parametri inviati tramite il metodo HTTP POST;
  • $_SERVER, che fornisce informazioni relative al server Web e alla richiesta effettuata dal client;
  • $_COOKIE, che contiene i valori memorizzati nei cookie inviati dal browser;
  • $_SESSION, utilizzato per gestire le informazioni persistenti legate a una sessione di lavoro.

Gli array $_GET e $_POST permettono allo script PHP di accedere ai dati inviati dal browser quando l’utente compila un form o richiama una pagina passando dei parametri.
L’array $_SERVER, invece, fornisce informazioni fondamentali sull’ambiente di esecuzione dello script e sul client che ha effettuato la richiesta.

In particolare, alcune delle variabili più utilizzate contenute in $_SERVER sono:

  • $_SERVER['REMOTE_ADDR'], che restituisce l’indirizzo IP del client;
  • $_SERVER['SERVER_SOFTWARE'], che indica il software del server Web in esecuzione;
  • $_SERVER['HTTP_USER_AGENT'], che contiene informazioni sul browser utilizzato dall’utente;
  • $_SERVER['SERVER_NAME'], che rappresenta il nome del server;
  • $_SERVER['PHP_SELF'], che restituisce il nome dello script PHP attualmente in esecuzione.

È importante osservare che tutti gli array superglobali di PHP sono scritti in maiuscolo. Gli indici degli array, racchiusi tra parentesi quadre, possono essere specificati utilizzando sia apici singoli sia doppi apici.

Le informazioni fornite dalle variabili superglobali trovano applicazione pratica in numerosi contesti, come la registrazione degli accessi al server, la creazione di file di log e la produzione di statistiche sui visitatori, ad esempio per conoscere la provenienza geografica o il tipo di browser utilizzato.

In condizioni normali, le variabili definite all’interno di uno script PHP hanno una durata limitata all’esecuzione dello script stesso: una volta terminata l’esecuzione, esse vengono distrutte.
Fanno eccezione le variabili contenute nell’array $_SESSION, la cui validità può estendersi a più pagine. Questa caratteristica consente di realizzare il concetto di sessione di lavoro, ovvero un insieme di operazioni correlate svolte dall’utente in un determinato intervallo di tempo, spesso con attività preliminari necessarie per quelle successive (ad esempio l’autenticazione).

Esempio: utilizzo dell’array $_SERVER

Nel seguente esempio viene mostrato uno script PHP che visualizza alcune informazioni relative al client e al server, utilizzando le variabili superglobali dell’array $_SERVER.

<!DOCTYPE html>
<html>
    <head>   
        <title>Server</title>
    </head>
    <body>   
        Il tuo indirizzo IP :<?php echo $_SERVER['REMOTE_ADDR'] . "<br>" ?>   
        Il tuo browser Web :<?php echo $_SERVER['HTTP_USER_AGENT'] . "<br>" ?>  
        Il tuo server Web :<?php echo ($_SERVER['SERVER_SOFTWARE']) . "<br>" ?>   
        Il tuo server :<?php echo $_SERVER['SERVER_NAME'] . "<br>" ?>
    </body>
</html>

server.php
server.php

Strutture di controllo del flusso in PHP

Come tutti i linguaggi di programmazione, anche PHP mette a disposizione specifici costrutti che consentono di controllare il flusso di esecuzione delle istruzioni. Questi costrutti, noti come strutture di controllo, permettono allo script di prendere decisioni oppure di ripetere una serie di operazioni in base a determinate condizioni.
Le principali strutture di controllo utilizzate in PHP sono le strutture di selezione e le strutture di iterazione.


La struttura di selezione if

La struttura if consente di eseguire blocchi di codice differenti in base al risultato di una condizione logica.
Se la condizione specificata risulta vera, viene eseguito il primo blocco di istruzioni; in caso contrario, viene eseguito il blocco associato alla clausola else.

La sintassi generale della struttura if in PHP è la seguente:

<?php
  if ( condizione ) {
    // istruzioni eseguite se condizione è vera
  } else { 
    // istruzioni eseguite se condizione è falsa
  }
?>

Questa struttura è fondamentale per realizzare pagine Web dinamiche, poiché consente di adattare il comportamento dello script ai dati ricevuti dall’utente, ai parametri di un form o alle informazioni fornite dal server.


Le strutture di iterazione while e for

Le strutture di iterazione permettono di ripetere l’esecuzione di un insieme di istruzioni finché una determinata condizione risulta verificata. Sono particolarmente utili quando è necessario elaborare più volte dati simili, ad esempio nel caso di array, cicli di calcolo o generazione di contenuti dinamici.

La struttura while esegue il blocco di istruzioni finché la condizione rimane vera. La condizione viene verificata prima di ogni iterazione.

<?php
  while ( condizione ) {   
    // istruzioni eseguite mentre condizione si mantiene vera
  }
?>

La struttura for, invece, è generalmente utilizzata quando si conosce in anticipo il numero di iterazioni da effettuare. Essa integra in un’unica istruzione l’inizializzazione, la condizione di controllo e l’aggiornamento della variabile di ciclo.

<?php
  for( inizializzazione; condizione; aggiornamento) {  
    // istruzioni eseguite se condizione è vera
  }
?>

Le strutture while e for rappresentano strumenti essenziali per la programmazione in PHP, poiché consentono di automatizzare operazioni ripetitive e di gestire in modo efficiente l’elaborazione dei dati all’interno delle applicazioni Web dinamiche.

Interazione con l’utente in PHP

In PHP l’interazione con l’utente avviene quando quest’ultimo invia una richiesta al server Web. Il server, tramite PHP, genera una pagina web dinamica come risposta. L’utente può fornire informazioni aggiuntive alla richiesta attraverso moduli HTML (form), che costituiscono un’interfaccia grafica composta da caselle di testo, pulsanti e altri elementi interattivi.

Tramite i form, l’utente inserisce valori che vengono inviati al server come parametri di uno script PHP.

Esempio di form HTML

<form action="cerca.php" method="get">
    Parola: <input type="text" name="parola" /> 
    <input type="submit" value="Cerca" /> 
</form>

Quando l’utente clicca sul pulsante “Cerca”, il browser richiama lo script cerca.php indicato nell’attributo action del form. Tutti i campi del modulo vengono automaticamente trasformati in parametri: il nome del parametro corrisponde all’attributo name di ciascun input, mentre il valore corrisponde a quanto inserito dall’utente.


I metodi get e post

L’attributo method del form indica al browser come trasmettere i dati al server:

  • GET: i parametri vengono aggiunti all’URL della pagina, visibili nella barra degli indirizzi. È utile per trasmettere dati brevi e non sensibili, ma non è adatto per password o numeri di carte di credito, né per testi molto lunghi.
    Esempio: se l’utente inserisce “gatto” nella casella parola, l’URL generato sarà: cerca.php?parola=gatto
  • POST: i parametri vengono inviati nel corpo della richiesta HTTP e non sono visibili all’utente. È indicato per grandi quantità di dati o informazioni sensibili.

In PHP, i valori inviati con get sono accessibili tramite l’array associativo $_GET, mentre quelli inviati con post tramite $_POST. L’indice dell’array corrisponde al valore dell’attributo name dell’input del form.
Esempio per il form sopra:

$valore = $_GET["parola"];

Questi metodi consentono a uno script PHP di generare una pagina personalizzata in base ai dati forniti dall’utente.

Esempio pratico: conversione chilometri → miglia

Creiamo un modulo HTML (richiesta.html) che invia il valore inserito dall’utente allo script PHP converti.php tramite il metodo post:

<!DOCTYPE html> 
<html> 
    <head>   
        <title>Conversione km-miglia</title>
    </head>
    <body>   
        <h2>Conversione in miglia</h2>   
        <form action="converti.php" method="post">  
            lunghezza in km: <input type="text" name="km">      
            <input type="submit" name="invia" value="Converti">   
        </form>   
    </body>
</html>

Lo script converti.php riceve il valore e lo trasforma in miglia:

<!DOCTYPE html>
<html>
    <head>   
        <title>Conversione km-miglia</title>
    </head>
    <body>   
        <h3><?php echo $_POST["km"]." "; ?>kilometri </h3>   
        corrispondono a   
        <h3>
            <?php
                /** il valore dei km e' ricevuto
                * come parametro dalla pagina HTML
                * 1 miglio = 1,609344 kilometri
                */
                $miglia = $_POST["km"] /1.6093;
                echo ($miglia). " ";            
            ?> 
        Miglia  
        </h3>
    </body>
</html>

richiesta.html

Form e calcolo in un’unica pagina

È possibile combinare form HTML e calcolo PHP nello stesso file, eliminando il file separato. Per farlo, si usa l’attributo action con la variabile $_SERVER['PHP_SELF'], che indica il nome dello script in esecuzione:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

Esempio completo (converti2.php):

<!DOCTYPE html>
<html>
    <head>   
        <title>Conversione km-miglia</title>
    </head>
    <body>
        <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
            lunghezza in km: <input type="text" name="km">      
            <input type="submit" name="invia" value="Converti">   
        </form>   

        <?php
        // Controlla se il pulsante "invia" è stato cliccato
        if (isset($_POST["invia"])) {
            $km = $_POST["km"];
            $miglia = $km / 1.609344;
            echo "<h3>$km chilometri corrispondono a $miglia miglia</h3>";
        }
        ?>
    </body>
</html>

La funzione isset

La funzione predefinita isset permette di verificare se a una variabile è stato assegnato un valore. Restituisce:

  • true se la variabile esiste ed è valorizzata;
  • false se la variabile non è stata definita o è null.

In questo modo si distingue il primo caricamento del form dall’esecuzione del calcolo dopo l’invio dei dati.

<!DOCTYPE html>
<html>
    <head>   
        <title>Conversione km-miglia</title>
    </head>
    <body>   
        <h3><?php echo $_POST["km"]." "; ?>kilometri </h3>   
        corrispondono a   
        <h3>
            <?php
                /** il valore dei km e' ricevuto
                * come parametro dalla pagina HTML
                * 1 miglio = 1,609344 kilometri
                */
                $miglia = $_POST["km"] /1.6093;
                echo ($miglia). " ";            
            ?> 
        Miglia  
        </h3>
    </body>
</html>

converti.php
converti.php

L’L’accesso ai database MySQL con PHP

PHP e MySQL possono collaborare per costruire pagine Web dinamiche che interagiscono con i database in rete. PHP è un linguaggio di scripting che estende le funzionalità del server Web, mentre MySQL è un programma server che gestisce le basi di dati.

In un sito Web dinamico, i dati risiedono su un database MySQL. Quando un utente richiede una pagina, i dati vengono recuperati dal database e inseriti nelle pagine HTML generate dinamicamente dallo script PHP, che il server invia al browser dell’utente.

Le operazioni principali degli script PHP lato server includono:

  1. Connessione al database: stabilire un collegamento con MySQL, inviare comandi SQL e acquisire le risposte.
  2. Generazione della pagina web: scrivere i dati ricevuti dal database all’interno di pagine HTML, in modo che siano interpretati dal browser dell’utente.

La sequenza di interazione tra PHP, MySQL e il browser è la seguente:

  1. Il browser invia una richiesta per una pagina PHP.
  2. Il server riconosce l’estensione .php e attiva l’interprete PHP per eseguire lo script.
  3. Lo script PHP invia richieste al database MySQL tramite comandi SQL.
  4. Il server MySQL risponde con i dati richiesti.
  5. Lo script PHP inserisce i dati all’interno di una pagina Web HTML.
  6. Il server invia la pagina generata al browser dell’utente.

interazione PHP e MySQL
interazione PHP e MySQL

Connessione ai Database: tre metodi

PHP offre tre approcci principali per collegarsi a un database MySQL:

1. Stile procedurale con mysqli_connect()

La funzione mysqli_connect() permette di stabilire una connessione in stile procedurale. Restituisce un oggetto di connessione o false in caso di errore.

<?php
    //approccio procedurale
    $servername = "localhost";
    $username = "root";
    $password = "";
    $database = "test";
    
    $conn = mysqli_connect($servername, $username, $password, $database);
    
    if (!$conn) {
        die("Connessione fallita: " . mysqli_connect_error());
    } else {
        echo "Connessione riuscita con approccio procedurale!";
    }
?>

connessione procedurale
connessione con stile procedurale

2. Stile orientato agli oggetti con mysqli

mysqli è una classe che permette di gestire la connessione e l’interazione con il database in stile OOP (Object-Oriented Programming). Si crea un’istanza della classe mysqli:

<?php
    //connessione con approccio orientata agli oggetti
    $servername = "localhost";
    $username = "root";
    $password = "";
    $database = "test";

    $conn = new mysqli($servername, $username, $password, $database);

    if ($conn->connect_error) {
        die("Connessione fallita: " . $conn->connect_error);
    } else {
        echo "Connessione riuscita con approccio orientato agli oggetti!";
    }
?>

connessione oop
connessione con stile oop

3.Stile orientato agli oggetti con PDO

PDO (PHP Data Objects) è un’alternativa flessibile e sicura, compatibile con diversi database.

<?php
    // connessione con PDO
    $servername = "localhost";
    $username = "root";
    $password = "";
    $database = "test";
    
    try {
        $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Connessione riuscita con PDO!";
    } catch (PDOException $e) {
        die("Connessione fallita: " . $e->getMessage());
    }
    
?>

connessione con PDO
connessione con PDO

Commenti sugli script

  • die(): termina immediatamente lo script e stampa opzionalmente un messaggio di errore.
  • exit(): termina lo script senza messaggio o con codice di stato.
  • Freccia ->: in PHP serve per accedere a proprietà e metodi di un oggetto.
    • Esempio: $conn->connect_error accede alla proprietà connect_error dell’oggetto $conn.
  • ::: usato per accedere a metodi o proprietà statiche di una classe.
  • PDO:
    • $conn->setAttribute(...) imposta un’opzione sulla connessione.
    • PDO::ATTR_ERRMODE definisce la modalità di gestione degli errori.
    • PDO::ERRMODE_EXCEPTION fa sì che eventuali errori generino eccezioni, facilitando il debug.

Consigli per la scelta

  • PDO: consigliato per progetti scalabili e sicuri, compatibile con più database.
  • MySQLi OOP: adatto se si lavora solo con MySQL e si preferisce la programmazione a oggetti.
  • MySQLi procedurale: meno flessibile, da usare solo in progetti semplici o legacy.

Creazione del database di test

Per testare gli script, occorre creare un database test:

  • Avviare MySQL tramite XAMPP.
  • Cliccare su ADMIN in corrispondenza di MySQL.
  • Nel pannello di phpMyAdmin, cliccare su SQL e scrivere:
CREATE DATABASE test;
  • Cliccare su ESEGUI.

Così viene creato il database test pronto per l’uso con gli script PHP.

Nella sezione DOWNLOAD è possibile scaricare gli script descritti nell’articolo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Una risposta a “PHP: linguaggio di programmazione lato server”

  1. Avatar Diego Musicco
    Diego Musicco

    top sito prof 🤙🏽