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 |
Nella riga 8 il tag Textarea ha i seguenti attributi:
La pagina php, da salvare con il nome osservazioni.php, come specificato nell'attributo action del tag form, è la seguente:
<html>
<head>
<title>File</title>
</head>
<body>
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:
'r' Apre in sola lettura; posiziona il puntatore all'inizio del file.
'r+' Apre in lettura e scrittura; posiziona il puntatore all'inizio del file.
'w' Apre il file in scrittura; posiziona il puntatore all'inizio del file e tronca il file alla lunghezza zero. Se il file non esiste, tenta di crearlo.
'w+' Apre in lettura e scrittura; posiziona il puntatore all'inizio del file e tronca il file alla lunghezza zero. Se il file non esiste, tenta di crearlo.
'a' Apre in sola scrittura; posiziona il puntatore alla fine del file. Se il file non esiste, tenta di crearlo.
'a+' Apre in lettura e scrittura; posiziona il puntatore alla fine del file. Se il file non esiste, tenta di crearlo.
'x' Crea ed apre il file in sola scrittura; posiziona il puntatore all'inizio del file. Se il file esiste già la chiamata a fopen() fallirà restituendo FALSE e verrà generato un errore di livello E_WARNING. Se il file non esiste si tenterà di crearlo.
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>
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