Utilizzare un file di testo .txt con il linguaggio di programmazione PHP.
ALLWEB free
Web Directory Script Linguaggi
Italiano Inglese Tutte
 
 20 Aug 2014
aggiungi in preferiti  
Home    Mappa directory    Script




PHP e file di testo (.txt):

Short link:
Premessa:
Prima di cercare soluzioni ad errori nello script che utilizza i file di testo (.txt) accertatevi che il vostro gestore di spazio web non richieda specifiche protezioni di scrittura nella cartella che contiene i file di testo!!!
Se ad esempio un file è comunque generato da uno script php ma non è leggibile, è probabile che la cartella dove depositate il file non sia stata configurata correttamente (talvolta l'errore non è nello script!!).
Tali configurazioni solitamente si eseguono dal pannello di controllo del sito gestore dello spazio web.

Se il problema non è la cartella del file, potrebbero essere i permessi di accesso del file stesso, in tal caso vi rimandiamo a leggete la pagina relativa alle funzioni chmod(); chgrp(); chown();

- Un altro comune errore è l'indirizzo del file (chiedetelo al supporto del Vs. hosting), probabilmente è una riga simile a questa:
/home/httpd/vhosts/tuosito.it/nomecartella/file.txt


PHP è un linguaggio di programmazione autonomo derivante dal C, ed è nato per soddisfare alcune esigenze che avevano i programmatori internet.
Questo vuol dire che il binomio PHP-MySql (o qualunque altro database) è nato dopo il linguaggio di programmazione.

PHP permette oltre l'utilizzo dei database, anche il lavoro con i file di testo (.txt). Mediante PHP possiamo leggerli, modificarli, crearli e salvarli. In pratica possiamo avere un'alternativa ai database (anche se con molti limiti e molto più complicata).

Prima di analizzare le funzioni relative vi informiamo che un eventuale errore con i file di testo genera un risultato booleano false con un errore WARNING mostrato a video.
Per ovviare a questo problema possiamo inserire il simbolo @ prima della funzione (es. @fopen) che non fa altro che nascondere l'errore generato.
Ricordate che l'errore che appare a video MOSTRA IL PERCORSO DEL FILE .TXT ed è molto pericoloso se nel file sono memorizzate password od altre informazioni personali!!
Per verificare l'errore possiamo associare un ciclo if al valore booleano.

Vediamo le funzioni base che consentono di lavorare con i file di testo:


fopen();

La funzione fopen(); apre un file. Come per le connessioni con i database, solitamente si associa una variabile a questa connessione, la quale identifica il file in maniera univoca.
Esempio:
<?
$var=fopen("nome_file.txt","tipo");
?>
Tipo di apertura file:
Al posto di 'tipo' dobbiamo inserire una costante che identifica il tipo di apertura file.

rPer sola lettura.
r+Per lettura e scrittura (scrive all'inizio del file).
wPer sola scrittura (I dati già scritti andranno persi e se il file non esiste sarà creato).
w+Per scrittura e lettura (I dati già scritti andranno persi e se il file non esiste sarà creato. Scrive all'inizio del file).
aPer aggiungere (I dati saranno aggiunti in coda a quelli già scritti, se il file non esiste sarà creato.)
a+Per aggiungere e lettura (I dati saranno aggiunti in coda a quelli già scritti, se il file non esiste sarà creato.)



fread();

La funzione fread(); estrae un numero di byte dal file di testo (.txt).
Esempio:
<?
$var=fopen("nome_file.txt","r");
$var2=fread($var,20);
?>
In questo caso abbiamo aperto un file di testo (nome_file.txt) solo per leggerlo (r) ed abbiamo estratto 20 byte.

Per leggere tutto il file dobbiamo scrivere in questo modo:
<?
$var=fopen("nome_file.txt","r");
$var2=fread($var,filesize("nome_file.txt"));
?>
Dove la funzione filesize() restituisce la grandezza totale del file.
Nel caso dentro il file ci siano dei rientri a capo che vogliamo visualizzare a video dobbiamo inserire un'altra funzione:
nl2br() che in pratica aggiunge un <br> quando trova un ritorno a capo nel file di testo.
Esempio:
<?
$var=fopen("nome_file.txt","r");
$leggi=fread($var,filesize("nome_file.txt"));
$sss=nl2br($leggi);
fclose($var);
echo $sss;
?>



fwrite();

La funzione fwrite(); scrive una stringa nel file di testo che abbiamo aperto.
Esempio:
<?
$var=fopen("nome_file.txt","a+");
fwrite($var, "stringa di prova");
?>
In questo caso abbiamo aperto un file di testo (nome_file.txt) per aggiungere e lettura (a+) ed abbiamo scritto "stringa di prova" alla fine dei dati già scritti.
Nel caso il file non esista il server lo crea e vi scrive la frase da inserire.


fclose();

La funzione fclose(); chiude la connessione aperta verso il file di testo.
Esempio:
<?
$var=fopen("nome_file.txt","a+");
....
....
fclose($var);
?>
Importante:
Ricordate che un sito con script PHP depositato su un hosting non è detto che sia compatibile con altri hosting. In teoria si, (se la versione di PHP è la stessa), ma in pratica si potrebbero riscontrare alcune differenze nelle impostazioni di sicurezza che il gestore dello spazio web impone.
Per essere sicuri di non incorrere in futuri errori è consigliabile chiudere SEMPRE un file aperto, anche se il sito funziona ugualmente se non chiuso. Potrete risparmiare tempo se in futuro cambiate il gestore di spazio web!!


feof();

La funzione feof(); verifica se abbiamo raggiunto la fine del file di testo che abbiamo letto.
Restituisce true se è andata a buon fine e false se viceversa abbiamo errato qualche passaggio.


file_exists();

Controlla se un file esiste. Risponde true se esiste e false se non esiste.
Esempio:
<? $var= file_exists("nome_file.txt");
if ($var==true) echo"true<br>";
if ($var==false) echo"false<br>";
?>



filesize();

Restituisce la grandezza totale del file che indichiamo all'interno delle parentesi.
Si può usare per scrivere un intero file, vedi l'esempio della funzione fread();



include();

Utilizzato anche per altri scopi può servire per scrivere a video un file di testo. In pratica include nella pagina web il testo contenuto nel file di testo. Che sia testo, comandi, uno script, qualunque sia il contenuto verrà inserito nella pagina web in quel preciso punto dove è inserito il comando include.

Esempio:
<? include("nome_file.txt"); ?>
Inserisce il testo senza tenere conto dei ritorni a capo, sempre che nel testo non ci siano dei tag <br> di HTML.


file();

La funzione file("nome_file.txt") restituisce un array con gli elementi uguali ad ogni riga del file di testo.
Possiamo capire quento sia importante questa funzione. Unita alle altre funzioni array è possibile manipolare un file di testo quasi come un database.


count();

Questa non è una funzione direttamente collegabile ai file di testo, ma il suo inserimento in questa pagina è giustificato dal suo largo utilizzo con l'istruzione file();
L'istruzione count(); conta gli elementi contenuti in un array.


Conclusioni:

I file di testo possono essere usati per molteplici usi. Dobbiamo solo immaginare il file di testo come un grosso array, ed operare di conseguenza.

Esempio di procedura:
  • Memorizziamo i dati utente in un file (in ogni riga un dato relativo ad un utente.
  • A questo punto contiamo le righe (file(); e cont();).
  • Adesso con un ciclo for facciamo una scansione del contenuto array e troviamo quello cercato.
Potrete trovare un esempio pratico qui.