Ciao raga, in questa pillola vorrei spiegare come utilizzare le funzioni FTP, perchè molto utili a chi non ha un client FTP e non ha la minima intenzione di scaricarlo...
Annuncio che troverete una breve descrizione dei comandi ftp all'interno degli script che posterò in seguito. Allora... cominciamo con uno script che ci spighi + o - la connessione al server:
Codice PHP:
<?
/* Connessione al server ftp */
$ftp_host = 'ftp.miosito.it';
$connect = ftp_connect($ftp_host) or die("Si è verificato un errore durante la connessione al server ftp");
/* login al server ftp */
$username = 'pater';
$pwd = 'changeme';
$login = ftp_login($connect, $username, $pwd) or die("Si è verificao un errore durante l'accesso al server ftp");
/* chiusura connessione al server ftp */
ftp_quit($connect) or die("Si è verificato un errore durante la chiusura della connessione al server ftp");
?>
Così ci connettiamo al server ftp, effettuo il login, e chiudo la connessione: questo esempio non stamperà niente, a parte gli eventuali messaggi di errore.
Ora passiamo alle operazioni relative ai files di un server ftp: Inserimento, Recupero e Cancellazione. Ovviamente per eseguire queste operazioni bisogna essere loggati al server.
In questo script spiegherò come eseguire queste operazioni:
Codice PHP:
/* INSERIMENTO DI UN FILE */
$destination_file = "ftp.miosito.it/file.exe";
$source_file = "c:/binary_file.exe";
/* alla fine di ftp_put bisogna mettere il tipo di file da inserire, che può essere FTP_BINARY o FTP_ASCII */
ftp_put($connect, $destination_file, $source_file, FTP_BINARY) or die("Errore durante l'upload del file $source_file nel server ftp");
/* RECUPERO DI UN FILE */
$destination_file = "c:/text.txt";
$source_file = "ftp.miosito.it/ascii_file.txt";
ftp_get($connect, $destination_file, $source_file, FTP_ASCII) or die("Errore durante il recupero del file dal server ftp");
/* CANCELLAZIONE DI UN FILE */
$file_to_del = "ftp.miosito.it/file.exe";
ftp_delete($connect, $file_to_del) or die("Errore durante la cancellazione del file dal server ftp");
Qui viene usata la var $connect come chiave primaria di ogni funzione, infatti essa è indispensabile e contiene la connessione al server ftp.
Per i più curiosi metto qui alcune funzioni ftp che servono a: dare la dimensione di un determinato file, restituire la data dell'ultima modifica di un dato file, settare i permessi ad un file sul server, rinominare un file sul server ftp.
Codice PHP:
/* DARE LA DIMENSIONE DI UN FILE */
$file = "ftp.miosito.it/file.txt";
$size = ftp_size($connect, $file);
/* RESTITUIRE LA DATA DELL'ULTIMA MODIFICA DI UN FILE */
$file = "ftp.miosito.it/file.txt";
$date = ftp_mdtm($connect, $file);
/* SETTARE I PERMESSI AD UN FILE */
$file = "ftp.miosito.it/file.txt";
ftp_chmod($connect, 0777, $file);
/* RINOMINARE UN DETERMINATO FILE */
$file_da_rinominare = "ftp.miosito.it/file.exe";
$file_rinominato = "ftp.miosito.it/file_abc.exe";
ftp_rename($connect, $file_da_rinominare, $file_rinominato);
Dò una precisazione: NON SONO SICURO CHE $FILE_RINOMINATO DEBBA CONTENERE ANCHE LA PATH DEL FILE. Quindi, chi lo sappia è pregato di precisarmi, questo perchè non ho trovato niente in riferimento a questo mio dubbio...
Allora, dopo aver scritto tutte le funzioni relative ai files, è l'ora delle directories. Spiegherò, qui in seguito, come: creare una directory sul server ftp, eliminare una directory dal server ftp, e ricevere un'elenco dettagliato dei files presenti in una directory.
Codice PHP:
/* CREARE UNA DIRECTORY */
$dir = "ftp.miosito.it/directory/";
ftp_mkdir($connect, $dir);
/* ELIMINARE UNA DIRECTORY */
$dir = "ftp.miosito.it/directory/";
ftp_rmdir($connect, $dir);
/* RICEVERE UN'ELENCO DETTAGLIATO DEI FILES IN UNA DIR */
$dir = "ftp.miosito.it/directory/";
ftp_rawlist($connect, $dir);
Ricordo che ftp_rawlist restituisce un array, e quindi deve essere trattato come tale.
Un'ultima funzione prima di andare, tanto inutile quanto utile: Restituire l'identificatore del tipo di sistema del server FTP remoto.
Codice PHP:
$systype = ftp_systype($connect);
Ok... Ora ho davvero finito... Spero di avervi chiarito i vostri dubbi, o di avervi insegnato ad usare le funzioni ftp con php... Ora vi devo lasciare. Se avete ancora problemi con queste funzioni, non avete che da postare!!!
Ciauz...