Numeri, stringhe, variabili, files e funzioni predefinite in PHP.


In questa introduzione a PHP ci si rivolge a persone che abbiano già una buona esperienza di redazione di pagine HTML e di linguaggi di programmazione client side, come Javascript, che possono corredarle. La programmazione in PHP vengono quindi esposta a partire da esempi che si suppongono facilmente comprensibili, dai quali dedurre proprietà e regole generali.

Ovviamente è inutile usare la programmazione server side in casi in cui è sufficiente la programmazione client side. Quindi si farà riferimento a situazioni che non possono essere trattate in quest'ultimo modo.

Esempio 1

Come primo esempio si propone una semplice pagina web che comunica all'utente il numero di accessi alla pagina stessa.

Il sorgente dell'esempio è il seguente

<!DOCTYPE html>
<html lang="it"> 

<head>
  <title>contaV
  <meta charset="utf-8" >
  <meta name="viewport" content="width=device-width,minimum-scale=1.0,initial-scale=1.0">
</head>

<body>
<h1>
<?php
  $conta = 0;
  $nf = "file_conta.txt";
  if (file_exists($nf))
    {
      $file = fopen($nf,"r");
      $conta = fgets($file);
      fclose($file);
    }
  $conta++;
  $file = fopen($nf,"w");
  fputs($file,$conta);
  fclose($file);
  $out = "Questa pagina è stata visitata ";
  if ($conta == 1) 
    $out .= "una volta.";
  else
    $out .= $conta." volte.";
  echo $out;
?>
</h1>
</body>
</html>

La pagina è sostanzialmente una pagina HTML. L'unica novità rispetto all'HTML è l'uso del tag <?php che contiene uno script in linguaggio PHP. Lo script è chiuso da ?>. L'uso di questo tag è possibile solo se la pagina è salvata con l'estensione *.php. Lo script contenuto nel tag è rivolto al server quindi, a differenza di analoghi script in Javascript, non può essere eseguito dal browser che legge la pagina. Se volete vedere questa pagina nel vostro PC, dovete avere installato Apache e PHP e aver copiato la pagina in una cartella dentro la cartella www e usare come root della URL del documento localhost.

Conviene, per evitare confusioni, creare nella cartella www una cartella denominata, ad esempio, contavisite e salvare il sorgente in questa cartella con nome contaV.php.

La pagina sarà attivata dal browser scrivendo localhost/contavisite/contaV.php. Se nel browser si clicca il bottone di reload si vede che il numero delle visite aumenta.

Lo script PHP inizia con due istruzioni di assegnazione di valore a due variabili identificate da $conta e $nf:

  $conta = 0;
  $nf = "file_conta.txt";

Segue l'istruzione condizionale

  if (file_exists($nf))
    {
      $file = fopen($nf,"r");
      $conta = fgets($file);
      fclose($file);
    }

Questa istruzione ha la stessa sintassi dell'analoga in Javascript.

Nella condizione e nel blocco si invocano quattro funzioni predefinite in PHP: file_exists(), fopen(), fgets() e fclose(). Notare che anche gli identificatori delle funzioni sono case sensitive. Notare inoltre che gli identificatori delle funzioni non iniziano con il dollaro e che terminano obbligatoriamente con una coppia di parentesi tonde che sono quindi necessarie anche se la funzione non richiede argomenti.

L'istruzione successiva

  $conta++;  

incrementa di un'unità il valore di $conta. Nel caso non sia stato eseguito il blocco, il valore diventa 1; nel caso contrario è il valore letto dal file che viene incrementato di 1. Notare che in quest'ultimo caso, il valore letto come stringa, viene automaticamente aggiornato a valore numerico, cosa impossibile nei linguaggi tipizzati.

Seguono quindi tre istruzioni che aggiornano il valore registrato nel file "file_conta.txt".

  $file = fopen($nf,"w");
  fputs($file,$conta);
  fclose($file);

Infine, con l'istruzione

  echo $out;

il server spedisce al browser che legge la pagina il messaggio generato e assegnato alla variabile $out. Se nel browser si usa la funzione che visualizza il sorgente della pagina, si vede scritto solo questo valore. Il lavoro di elaborazione fatto dal server è completamente sconosciuto al browser al quale arrivano solo i messaggi spediti tramite l'istruzione echo.