• User Newbie

    Leggere il contenuto di una cartella remota con PHP

    Ciao a tutti , vorrei sapere se è possibile con PHP leggere il contenuto di una cartella presente su un server esterno!! Ho provato con opendir() ma funziona solo se la cartella è nel sito stesso!! Ho provato ad inserire in opendir() l'indirizzo http ma mi da errore!!Qualcuno può aiutarmi??Grazie.


  • User Attivo

    Ciao pasqualetrisolini,
    la opendir() permette di utilizzare URL:
    Per PHP5 dovresti utilizzare il protocollo ftp://URL
    per PHP4 puoi utilizzarla con file://URL.

    Entrambi i metodi, però, per funzionare devono avere a che fare con una directory su cui è possibile vedere il contenuto.

    Se nel tuo browser inserisci l'URL alla directory remota puoi vedere il suo contenuto?

    Ciao


  • User

    Utilizza la funzione scandir, è disponibile da php5 e ti ritorna direttamente un array del tipo index => filename

    it2.php.net/scandir

    (leggi attentamente le note del manuale dove spiega di cosa hai bisogno per utilizzare una url come parametro)


  • User Newbie

    Grazie per le risposte a breve provo i vostri consigli!! Nel frattempo avevo pensato ad un'altra soluzione: posso utilizzare la libreria cURL per creare una connessione URL e richiedere dal server destinatario le informazioni che mi servono?? _Ovvero dal Server A faccio una richiesta URL tramite la libreria cURL al Server B. Quest'ultimo deve rispondere alla richiesta restituendo la struttura di una determinata directory con i nomi ecc ecc... _è possibile fare una cosa del genere?? _In questo modo penso anche che risolverei i vari problemi dei permessi, visto che sarà uno script interno al server a fornire determinate informazioni.... _spero di essere stato abbastanza chiaro 😉


  • User Attivo

    Si,
    se le conosci sono preferibili.

    Se ti serve qualcosa di già pronto per interfacciarti con le CURL
    puoi dare un sguardo qui:
    mirkoagrati.110mb.com/articoli.php?page=Articoli&cat=PHP&art=Leggere_Files_Remoti&ext=xml

    Ciao


  • User

    @pasqualetrisolini said:

    Grazie per le risposte a breve provo i vostri consigli!! Nel frattempo avevo pensato ad un'altra soluzione: posso utilizzare la libreria cURL per creare una connessione URL e richiedere dal server destinatario le informazioni che mi servono??Ovvero dal Server A faccio una richiesta URL tramite la libreria cURL al Server B. Quest'ultimo deve rispondere alla richiesta restituendo la struttura di una determinata directory con i nomi ecc ecc...è possibile fare una cosa del genere??In questo modo penso anche che risolverei i vari problemi dei permessi, visto che sarà uno script interno al server a fornire determinate informazioni....spero di essere stato abbastanza chiaro 😉

    Utilizzando le cURL fai eseguire una connessione al server come se fosse un browser, per cui quando recupererai la pagina sarà quella che elenca la lista dei file in una directory o, se è presente una index viene ripresa quella (e in caso addio elenco directory).

    Supponendo che ti ritorni il sorgente html generato per l'esplorazione della directory devi esaminare questa tramite un pattern (posix o regexp, a tua scelta) e recuperare i dati.

    Se il server in questione non da problemi se scandagliato con una funzione come scandir o opendir (per la facenda che non inviano user agent o altre informazioni che invece potresti impostare con le cURL) ti conviene adoperarle in quanto ti risparmiano numerose operazioni di lavorazione di un eventuale responso da cURL


  • User Attivo

    Ciao Blancks,
    non per forza devi 'presentari' come browser utilizzando le CURL Lib.

    Puoi anche utilizzare altri protocolli come FTP per esempio.

    Ciao


  • User

    @mirkoagrati said:

    [***]

    Non so perchè, pensavo che non avesse un account ftp per l'accesso ai files del server B :bigsmile:


  • User Attivo

    Ciao,
    nel senso che potrebbe utilizzare anche il protocollo file:// o trovare il modo di camuffarsi in qualche altro tipo di client.

    Ciao


  • User Newbie

    Grazie per le risposte! Provo ad implementare qualcosa e vi faccio sapere. Per farvi capire meglio dovrei fare le seguenti cose :

    1- Sulla pagina del Server A deve comparire la struttura di una particolare directory presente sul Server B.

    2- Dalla pagina del Server A devo poter leggere i nomi dei file di questa cartella.

    3- Dalla pagina del Server A devo poter selezionare un file della directory del server B e salvarlo sul Server A (leggendo sul web si dovrebbe poter fare tramite una funzione download della libreria cURL).

    4- Dalla pagina del Server A devo poter ricercare un determinato file in base al nome, ovvero tramite un form di ricerca devo inserire un nome e mi deve visualizzare solo il file con quel nome presente nella directory presente sul server B.

    Dopo una serie di ricerche pensavo di implementare il tutto sempre instaurando una comunicazione tra Server A e Server B tramite cURL con una serie di chiamata/risposta, cioè il Server A chiede come è la struttura della directory e il Server B risponde, il Server A chiede se esiste un file di nome DEMO nella propria directory e il Server B risponde si o no...per la sicurezza per ora non è importante perchè si tratta di un progetto scolastico. Grazie a tutti per l'attenzione 😉