• Super User

    [Tutorial] Funzioni FTP con PHP

    Beh... Come richiesto dall'amministratore, ecco qui una pillolina sulle funzioni FTP in PHP:

    Ciao raga, in questa pillola vorrei introdurre l'argomento FTP, e spiegare come utilizzare le funzioni FTP, perchè molto utili a chi non ha un client FTP e non ha la minima intenzione di scaricarlo... Allora... Si comincia! 😄
    FTP: FILE TRANSFER PROTOCOL
    FTP è l'acronimo di File Transfer Protocol, che ci suggerisce una specie di protocollo per il trasferimento dei files. In effetti le cose stanno così, infatti le funzioni FTP servono per far comunicare i servers,
    ma servono anche per far comunicare i clients con essi: Il Protocollo FTP e le sue relative funzioni offrono un servizio per lo scambio di dati con grande affidabilità ed efficienza, ma non si deve pensare che
    le funzioni ftp non devono sostituire l'upload dei files, e non si deve credere che esse servano per l'upload.
    Ora cominciamo con la guida vera e propria.
    GUIDA ALLE FUNZIONI FTP CON PHP
    Annuncio che troverete una breve descrizione dei comandi ftp all'interno degli script che posterò in seguito. Allora... cominciamo con le funzioni principali che si devono effettuare per la connessione al server ftp:

    
    <?
    
    /* Connessione al server ftp */
    
    $ftp_host = 'ftp.miosito.it';
    
    $connect = ftp_connect&#40;$ftp_host&#41; or die&#40;"Si è verificato un errore durante la connessione al server ftp"&#41;;
    
    /* login al server ftp */
    
    $username = 'pater';
    
    $pwd = 'changeme';
    
    $login = ftp_login&#40;$connect, $username, $pwd&#41; or die&#40;"Si è verificao un errore durante l'accesso al server ftp"&#41;;
    
    /* chiusura connessione al server ftp */
    
    ftp_quit&#40;$connect&#41; or die&#40;"Si è verificato un errore durante la chiusura della connessione al server ftp"&#41;;
    
    ?>
    
    

    Qui abbiamo utilizzato 3 funzioni ftp: ftp_connect(), ftp_login() e ftp_quit(). Analizziamole insieme:
    FTP_CONNECT()
    Ftp_connect è la funzione necessaria per collegarsi al server ftp ed ad effettuare lo stream dei dati ftp. Questa funzione si può definire primaria, perchè
    essa è indispensabile per tutte le altre funzioni ftp, e per questo è SEMPRE il primo parametro di esse.
    FTP_LOGIN()
    Ftp_login è altrettanto indispensabile, perchè serve ad accedere al server ftp con la propria username e pwd.
    Il primo parametro è la connessione al server ftp, come abbiamo detto in precedenza, il secondo è l'username
    ed il terzo è la password.
    FTP_QUIT()
    Ftp_quit serve a chiudere una connessione al server ftp, ed ha come unico parametro, la connessione da chiudere.
    Lo script sopra utilizzato, naturalmente, non stamperà niente, a parte gli eventuali messaggi di errore.
    Ora passiamo alle funzioni ftp più utili, relative alla gestione dei files: Inserimento, Recupero e Cancellazione.
    Ecco un esempio di queste funzioni:

    
    /* INSERIMENTO DI UN FILE */
    
    $destination_file = "/file.exe";
    
    $source_file = "c:/binary_file.exe";
    
    ftp_put&#40;$connect, $destination_file, $source_file, FTP_BINARY&#41; or die&#40;"Errore durante l'upload del file $source_file nel server ftp"&#41;;
    
    /* RECUPERO DI UN FILE */
    
    $destination_file = "c&#58;/text.txt";
    
    $source_file = "/ascii_file.txt";
    
    ftp_get&#40;$connect, $destination_file, $source_file, FTP_ASCII&#41; or die&#40;"Errore durante il recupero del file dal server ftp"&#41;;
    
    /* CANCELLAZIONE DI UN FILE */
    
    $file_to_del = "/file.exe";
    
    ftp_delete&#40;$connect, $file_to_del&#41; or die&#40;"Errore durante la cancellazione del file dal server ftp"&#41;;
    
    

    Esaminiamo ora queste 3 funzioni dettagliatamente:
    FTP_PUT()
    Ftp_put serve ad inserire un determinato file in una determinata directory del serve ftp. Per eseguire
    queste operazioni, ftp_put, utilizza 4 parametri, che servono ad indicare la connessione al server, il file di destinazione sul server remoto, il file d'origine sul proprio hd,
    ed, infine, il tipo di file da esportare. Quest'ultimo parametro può essere:
    FTP_ASCII, se il tipo di file è ascii(files di testo);
    FTP_BINARY, se il tipo di file è binario(immagini, eseguibili...).
    Ricordo inoltre che il file di destinazione NON deve essere comprensivo di "ftp.miosito.it", basta solo che sia il nome del file comprensivo di dir(se necessario).
    FTP_GET()
    Ftp_get è necessaria per il recupero di un file dal server remoto, ed anche esso comprende 4 parametri: La connessione al server ftp, il file di destinazione sul proprio hd,
    il file d'origine sul server remoto, ed il tipo di file da importare.
    L'uso, come avrete capito, è molto simile a quello di ftp_put, ed il tipo di file da utilizzare sono quelli usati per descrivere questa funzione.
    FTP_DELETE()
    Ftp_delete serve a cancellare un file sul server ftp remoto: Esso ha bisogno solo di due parametri, che sono: Connessione e nome del file da eliminare.

    Ora, per i più curiosi, spiegherò come 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,
    Cominciando da questo script:```

    /* DARE LA DIMENSIONE DI UN FILE */

    $file = "/file.txt";

    $size = ftp_size($connect, $file);

    /* RESTITUIRE LA DATA DELL'ULTIMA MODIFICA DI UN FILE */

    $file = "/file.txt";

    $date = ftp_mdtm($connect, $file);

    /* SETTARE I PERMESSI AD UN FILE */

    $file = "/file.txt";

    ftp_chmod($connect, 0777, $file);

    /* RINOMINARE UN DETERMINATO FILE */

    $file_da_rinominare = "/file.exe";

    $file_rinominato = "/file_abc.exe";

    ftp_rename($connect, $file_da_rinominare, $file_rinominato);

    Ora spiegherò queste funzioni:
    **FTP_SIZE()**
    Ftp size necessita di 2 parametri: Connessione e file remoto.
    Ricordo inoltre, che questa funzione ritorna la dimensione del file in una stringa, e, se si è verificato un errore,
    ritorna -1. Inoltre non è sicuro che sia sempre suportata dal server.
    **FTP_MDTM()**
    ftp_mdtm(), cui utilizza 2 parametri: Connessione e file, controlla la data di ultima modifica di un file, e la restituisce in formato UNIX timestamp.
    Prorpio come ftp_size(), restituisce -1 se si è verificato un errore, non funziona con le cartelle, e non è
    sicuro che sia sempre supportata dal server.
    **FTP_CHMOD()**
    Ftp_chmod serve a settare i permessi di un file remoto, ed utilizza 3 parametri: Connessione, permessi (0777, 0755, ...), e path del file.
    **FTP_RENAME**
    Ftp_rename serve a rinominare un file sul serve ftp remoto. Esso utilizza 3 parametri: Connessione, nome del file (da rinominare), e nome del file (rinominato).
    
    Tttue queste funzioni sopre descritte, ricordo sono utilizzabili solo con i files, ora spiegherò alcune funzioni che
    agiscono sulle directory: creare una directory sul server ftp, eliminare una directory dal server ftp, e ricevere un'elenco dettagliato dei files presenti in una directory.
    

    /* CREARE UNA DIRECTORY */

    $dir = "/directory/";

    ftp_mkdir($connect, $dir);

    /* ELIMINARE UNA DIRECTORY */

    $dir = "/directory/";

    ftp_rmdir($connect, $dir);

    /* RICEVERE UN'ELENCO DETTAGLIATO DEI FILES IN UNA DIR */

    $dir = "/directory/";

    ftp_rawlist($connect, $dir);

    **FTP_MKDIR()**
    Ftp_mkdir utilizza 2 parametri indispensabili: Connessione e path della cartella da creare.
    **FTP_RMDIR()**
    Ftp_rmdir serve ad eliminare una directory e necessita degli stessi parametri di ftp_mkdir:
     Connessione e path della cartella da eliminare.
    **FTP_RAWLIST**
    Ftp_rawlist serve a ricevere un'elenco dettagliato ei files presenti in una directory remota:
    Esso utilizza 2 parametri: Connessione e path della directory remota, produce un'array ed il suo output non viene in alcun modo interpretato.
    
    Vi lascio con un'ultima funzione, che per certi versi può risultare utile, per altri no: Restituire l'identificatore del sistema di un server ftp remoto.
    

    $systype = ftp_systype($connect);

    **FTP_SYSTYPE()**
    Ftp_systype utilizza un solo parametro (Connessione) e restituisce una stringa.
    Spero di non aver scritto invano e che questa "guida" possa servire a qualkuno.
    Se avete ankora problemi con i comandi ftp, postate e vi risponderò al più presto!
    Un ciauz a tutti :ciauz: :ciauz: :ciauz:

  • Community Manager

    Grande Pater.

    Troppo belle ci vorrà un po per impararle

    :mani: :perfavore: :campione: :fumato:


  • Super User

    @giorgiotave said:

    Grande Pater.

    Troppo belle ci vorrà un po per impararle

    :mani: :perfavore: :campione: :fumato:
    solo che mi sono portato dietro i [codici] che usava html.it :fagiano:


  • User

    fantastico!!!!!!!!!!!!