Operazioni sui file.

Al lato Server è possibile usare le operazioni che agiscono sui file.

L'esempio seguente permette al client di compilare un form per esprimere delle osservazioni. Il Server acquisisce le informazioni e le registra in un file, da cui, poi, il web master potrà leggerle.

La pagina web che presenta il modulo da compilare è:

<html>

<head>

<title>File</title>

</head>

<body>

<h1>Modulo di suggerimenti</h1>

<form action="Osservazioni.php" method="post">

  <table border=1>

  <tr><td>Nome e Cognome:</td>

      <td><input type="text" name="persona" value=""></td>

  <tr><td>Professione:</td>

      <td><input type="text" name="lavoro" value =""></td>

  <tr><td><p align="right">Sesso:</td>

      <td><input type="radio" name="Sesso" value="M">Maschio<br>

          <input type="radio" name="Sesso" value="F">Femmina</td>

   <tr><td>Scrivimi le tue osservazioni</td>

       <td><Textarea name="comm" ROWS="5" WRAP="HARD"></textarea></td>

   <tr><td></td><td><input type="submit" value="Invia"></td>

   </table>

</form>

</body>

</html>

la quale ha il seguente aspetto:

Modulo di suggerimenti
Nome e Cognome:

Professione:

Sesso: Maschio Femmina

Scrivimi le tue osservazioni



Nella riga 8 il tag Textarea ha i seguenti attributi:

  1. COLS definisce il numero di caratteri per linea.
  2. ROWS definisce il numero di linee.
  3. WRAP specifica se si deve passare alla riga successiva quando la linea supera la larghezza. Il valore può essere:
    1. OFF disabilita il vai a capo automatico nella casella.
    2. HARD Il testo va a capo e l'utente non deve scorrere la casella. I vai a capo vengono trasmessi.
    3. SOFT Il testo va a capo e l'utente non deve scorrere la casella. I vai a capo non vengono trasmessi.

La pagina php, da salvare con il nome osservazioni.php, come specificato nell'attributo action del tag form, è la seguente:

Intestazione della pagina:

<html>

<head>

<title>File</title>

</head>

<body>

Script:

Dall'array $_POST vengono estratti i parametri ricevuti dal client.

<?php

  $persona = $_POST["persona"];

  $professione = $_POST["lavoro"];

  $MF = $_POST["Sesso"];

  $commenti = $_POST["comm"];

Si legge la data corrente e la si memorizza in una variabile, allo scopo di indicarla nel file.

  $oggi = date("d/m/Y");

Viene dichiarata una variabile che servirà per contenere la dimensione del file.

Se il file non esiste la sua lunghezza è zero, ma se esiste allora si legge la sua lunghezza.

Per evitare che il file cresca troppo, a causa di un numero elevato di utenti che inviano commenti, si impone una dimensione massima raggiungibile, ad esempio 2 KB. Se viene superata tale dimensione, il file viene aperto con l'attributo "w" che corrisponde a sovrascrivere il file.

  $lung=0;

  if (file_exists("osservazioni.txt")) $lung=filesize("osservazioni.txt");

  if ($lung>2048) $pf = fopen("Osservazioni.txt", "w");

Se la dimensione è minore di 2 KB i nuovi dati vengono accodati a quelli esistenti, aprendo il file in modo append.

La sintassi della funzione fopen richiede due parametri: il nome del file e il modo di accesso. Il modo di accesso può assumere i seguenti valori:

La funzione fopen restituisce un collegamento al file, se l'operazione è riuscita.

I file in php vengono trattati come file di testo, cioè file con record di lunghezza variabile, dove ogni record è una linea del file, terminata dai carattere \r\n (Inizio Riga - Nuova riga - ASCII 13 10)

  else $pf = fopen("Osservazioni.txt", "a+");

  if($pf) {

    echo "<br>sto acquisendo le tue preziose osservazioni";

    $riga = "\r\n-----------------------------------";

    $riga .= "\r\nin data $oggi il sig. $persona \r\n";

    $riga = $riga."di professione:".$professione." \r\n";

    $riga = $riga."Sesso: ".$MF."\r\n";

    fwrite($pf,$riga);

    $riga = "ha inviato le seguenti osservazioni:\r\n ".$commenti."\r\n";

    fwrite($pf,$riga);

    fclose($pf);

    echo "<br />Acquisizione conclusa";

  }

  else { echo "<br />Spiacente. Al momento non è possibile accettare informazioni"; }

?>

</body>

</html>


Lettura da file.

Il webmaster può leggere il contenuto del file scrivendo direttamente il percorso del file nella barra dell'indirizzo del suo browser: "osservazioni.txt", l'esempio seguente mostra comunque come leggere da un file. Il webmaster richiama la seguente pagina web:

<html>
<body>
Osservazioni inviate dagli utenti:
<a href="LeggiOsservazioni.php">Leggi</a><br<br>
<a href="cancellaOsservazioni.php">Elimina il file</a><br<br>
</body>
</html>

Questa pagina mostra due link. Il primo alla pagina web che mostra il contenuto del file, il secondo invece invia a una pagina che provvede a cancellare il file.

Il file LeggiOsservazioni.php è il seguente:

<html>

<head>

<title>File</title>

</head>

<body>

<?php

  if (file_exists("osservazioni.txt")) {

    echo "Osservazioni inviate:<br>";

    $f = fopen("osservazioni.txt", "r");

    if($f){

      while(!feof($f)) {

        $riga = fgets($f,4096);

        echo "<br>".$riga;

      }

      fclose($f);

    } else echo "non riesco a trovare il file";

  } else { echo "nessuno ha inviato commenti";

}

?>

</body>

</html>

L'istruzione fgets legge una riga dal file, di lunghezza massima 4096 byte o fino alla fine del file.

La pagina raggiunta dal secondo link, da denominare cancellaOsservazioni.php, è la seguente:

<html>

<head>

<title>File</title>

</head>

<body>

<?php

  if (file_exists("osservazioni.txt")) {

    if (unlink("osservazioni.txt"))

      echo "il file è stato eliminato";

    else

      echo "non si è potuto eliminare il file";

  }

?>

</body>

</html>

L'istruzione per eliminare un file è unlink(nomefile). Questa funzione restituisce true se l'operazione riesce, false in caso contrario.


Lo script precedente può essere usato per scambiare messaggi.

Per consentire al server Web di accettare connessioni provenienti da altri computer in rete, basta aprire il menu di wamp e scegliere il comando Put Online