PHP/Programmazione/File: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
wikificazione
Riga 13:
|-
|r
|Apre il file in modalità di sola '''lettura'''
|-
|r+
|Apre il file in modalità di '''lettura''' e '''scrittura'''
|-
|w
|Apre il file in modalità di sola '''scrittura''' cancellando il contenuto esistente. Se il file non esiste, PHP tenta di crearlo.
|-
|w+
|Apre il file in modalità di '''scrittura''' e lettura cancellando il contenuto esistente. Se il file non esiste, PHP tenta di crearlo.
|-
|a
|Apre il file in modalità di sola '''scrittura''' posizionando il puntatore alla fine del file per l'inserimento. Se il file non esiste, PHP tenta di crearlo.
|-
|a+
|Apre il file in modalità di '''scrittura''' e '''lettura ''' posizionando il puntatore alla fine del file per l'inserimento. Se il file non esiste, PHP tenta di crearlo.
|}
 
Ad esempio:<source lang=php>
$fp = fopen('/var/www/contatore.txt','w+');
$fp2 = fopen('./contatore.txt','w+');
$fp3 = fopen('<nowiki>http://esempio.it/file.txt</nowiki>','r');
</source>
 
Per indicare la directory corrente, si usa un punto (.). Per salire di un livello nella gerarchia, se ne usano due (..). Ad esempio:
<source lang=php>$fp = fopen('./contatore.txt','w+');</source>
Se il server è su sistemosistem Windows, che usano le barre retroverse, sarà necessario commutarle:
<source lang=php>$fp = fopen('C:\\data\\file.txt');</source>
 
Per chiudere un file già aperto usiamo semplicemente la funzione
Riga 45:
 
== Leggere e scrivere un file ==
Per '''leggere''' un file si usa la funzione <code>fread</code> la cui sintassi è:
fread(handle, lunghezza)
e legge <code>lunghezza</code> byte dal file aperto identificato dal puntatore <code>handle</code>; dopodiché, sposta il puntatore del file di <code>lunghezza</code> byte in avanti.
<br/>Ad esempio:<source lang=php>
$fp = fopen("file.txt", "r");
$contenuto = fread($fp, 10);
$cont2= fread($fp, 40);</source>
Con questo breve spezzone, <code>$contenuto</code> conterrà i primi dieci byte del file e <code>$cont2</code> i byte dall'undicesimo al cinquantesimo.,
 
Per '''scrivere''' su un file aperto in modalità di scrittura è possibile usare la funzione <code>fwrite</code> la cui sintassi è:
fwrite(handle, stringa, n);
e scrive sul file aperto e identificato da <code>handle</code> i primi <code>n</code> byte di <code>stringa</code>. Se <code>stringa</code> è minore di <code>n</code> byte, viene scritto il suo contenuto per intero. La funzione restituisce -1 in caso di errore.
Riga 61:
Viste queste due semplici funzioni, possiamo ora creare un semplice contatore di visite nel nostro sito. Per evitare che il conteggio aumenti ad ogni ''reload'' della pagina, useremo delle variabili di sessione per verificare così se l'utente stava già visitando il sito prima di caricare la pagina.
<source lang=php>
session_start()
if ($_SESSION['entrato'] == false) {
//incrementa le visite se è la prima volta che l'utente accede al sito in questa sessione
$_SESSION['entrato'] = true;
$fp = fopen("contatore.txt", "r+");
 
if (!$fp) {
//se il file non è stato aperto correttamente
echo "Errore nell'apertura del file";
exit; //esce dallo script PHP
}
$visite = (int) fread($fp, 10);
$visite++;
echo "Questo sito ha avuto $visite visite!";
fwrite($fp, $visite);
flose($fp);
}
 
$visite = (int) fread($fp, 10);
$visite++;
echo "Questo sito ha avuto $visite visite!";
fwrite($fp, $visite);
flose($fp);
}
</source>
 
Line 83 ⟶ 85:
file(nome)
e restituisce l'intero contenuto del file <code>nomefile</code> in un array in cui ciascun elemento è una riga contenente anche il carattere di ritorno a capo. Ad esempio:
<source lang=php>$cont = implode("", file("file.txt"));</source>
unisce tutte le riga restituendo quindi l'intero contenuto del file.
<br/>Per eliminare i caratteri di ritorno a capo è possibile usare la funzione <code>trim</code> che restituisce la stringa passata come argomento eliminando gli spazi bianchi agli estremi.
<br>Per leggere un file e metterlo in una stringa basta fare
<source lang=php>$contenuto=file_get_contents("nomedelfile");</source>
Per contre le righe di un file si usa:
<source lang=php>$righe=count(file("miofile"));</source>
 
Può risultare inoltre utile la funzione <code>stat</code> la cui sintassi è:
stat(nome)
e resituiscerestituisce un array associativo contenente alcune informazione sul file <code>nome</code>. Tra le chiavi dell'array vi sono:
{| {{Prettytable}}
!Chiave