Visualizzazione risultati 1 fino 11 di 11

Discussione: leggere e scrivere file in remoto con php

  1. #1
    Guest

    Predefinito leggere e scrivere file in remoto con php

    premetto che sono un principiante con php!
    vorrei leggere il contenuto di file di testo che ho sul mio spazio altervista, ho provato con le funzioni php fopen e file ma non riesco ad aprire il file
    fino a quando provo con file locali specificando il percorso reale sul mio pc nessun problema, mentre quando provo con il simulatore di server oppure quando provo con il server altervista nulla
    io ho provato con fopen (URL,"r") e con file(URL)
    sbaglio comandi o sintassi?
    e già che ci sono vorrei anche sapere se è possibile creare con php file di testo e inserirli nel mio spazio
    grazie

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,761

    Predefinito

    Sicuro che l'url è corretto? Puoi postare il sorgente?

    Per il resto, per creare un file, puoi usare la fopen() con gli appropriati flag (per intenderci, non r ma ad esempio w oppure a... {leggi la documentazione}), altrimenti se hai php5 puoi usare la file_put_contents()

    Ciao!
    Ultima modifica di alemoppo : 25-10-2010 alle ore 20.47.38

  3. #3
    Guest

    Predefinito

    mikipari per caso stai cercando di leggere un file php?
    perchè ho un problema simile al tuo, ho creato il seguente codice per leggere i file presenti sul mio sito:

    Codice PHP:
    $file = fopen("./index.php", "rb");
    $content = fread($file, 8192);
    echo
    "contenuti: $content";
    fclose($file);
    echo non mi restituisce nulla, se però gli do in pasto un file html funziona...
    Ultima modifica di rainz : 25-10-2010 alle ore 21.48.54

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da rainz Visualizza messaggio
    mikipari per caso stai cercando di leggere un file php?
    perchè ho un problema simile al tuo, ho creato il seguente codice per leggere i file presenti sul mio sito:

    Codice PHP:
    $file = fopen("./index.php", "rb");
    $content = fread($file, 8192);
    echo
    "contenuti: $content";
    fclose($file);
    echo non mi restituisce nulla, se però gli do in pasto un file html funziona...
    Molto probabilmente il file index.php contiene del codice PHP.
    Quando recuperi il sorgente, dato che accedi localmente e a un livello più basso di http, lo script ti restituisce il codice PHP non ancora interpretato.

    Facendo un paragone al tuo script: è come scrivere in un file HTML: <?php echo "prova"; ?>, il browser lo ignorerà ma se guardi nel sorgente, noterai che qualla stringa è presente.

    Ora dipende da quello che vuoi fare: ottenere il sorgente PHP non interpretato o ottenere l'output che genera php interpretando il codice.

    Per la prima scelta, il tuo codice va bene, ma potresti modificarlo in:
    Codice PHP:
    // primo metodo:
    $file = file_get_contents("./index.php");
    echo
    htmlentities($file);

    // secondo metodo: imposti l'header del file a txt.
    header('Content-Type: text/plain');
    echo
    file_get_contents('./index.php');
    Per la seconda scelta invece si tratta di qualcosa di più complesso.
    Se vuoi puoi utilizzare require/include e catturare l'output con i buffer ( ob_start ... ) oppure fare una richiesta HTTP a quel file:

    Codice PHP:
    // primo metodo: usi i buffer
    ob_start();
    require
    './index.php'; // se il file si trova in altre directory, assicurati di cambiare la directory attuale con chdir
    $output = ob_get_clean();

    echo
    $output; // sorgente HTML generato da php

    // secondo metodo: fai una richiesta HTTP
    echo file_get_contents('http://tuosito/index.php'); // con le restrizioni server2server sbloccate

  5. #5
    Guest

    Predefinito

    esatto, contiene codice php e voglio leggere il sorgente, non l'html derivante...

    Stavo giusto per postare che c'ero arrivato da solo usando la funzione htmlspecialchars() che da quanto ho capito è uguale a quella che mi hai suggerito htmlentities(), solo che converte più caratteri, giusto?

    grazie comunque!

    inoltre ho un'altra domanda: sul mio sito c'è un form per uploadare files, per evitare che chiunque possa farlo ho protetto la procedura con una password, questa è salvata in una variabile (in chiaro) in un file php che oltre a quella password contiene anche tutte le altre variabili di riferimento del sito (come la cartella root delle immagini e così via...). e mi è venuto il dubbio: un malintenzionato potrebbe mai leggermi un sorgente php dal sito e quindi ottenere quella password?
    Ultima modifica di rainz : 25-10-2010 alle ore 22.50.18

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da rainz Visualizza messaggio
    inoltre ho un'altra domanda: sul mio sito c'è un form per uploadare files, per evitare che chiunque possa farlo ho protetto la procedura con una password, questa è salvata in una variabile (in chiaro) in un file php che oltre a quella password contiene anche tutte le altre variabili di riferimento del sito (come la cartella root delle immagini e così via...). e mi è venuto il dubbio: un malintenzionato potrebbe mai leggermi un sorgente php dal sito e quindi ottenere quella password?
    No, non può se gli accede via HTTP.
    Soltanto se riesce ad accedere ai files tramite FTP o tramite il pannello di controllo di av o con altri script ( forse riesce a caricare qualche script malevolo tramite il tuo script d'upload ).

  7. #7
    Guest

    Predefinito codice sorgente

    io ho usato questi due comandi ma non ne va neppure uno

    $file = fopen("http://mikipari.altervista.org/filedaaprire.txt", "r");

    e

    $file = file("http://mikipari.altervista.org/filedaaprire.txt")

    l'URL è sbagliato?
    (filedaaprire è propio il nome del file)

    il mio file è di testo puro, perchè io poi vorrei poter leggere e creare file csv per interfacciarmi con tabelle di access che uso sul lavoro
    per adesso mi fermo addirittura a non riuscire ad aprire il file, poi proverò anche a leggere...

    grazie!

  8. #8
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Per recuperare il sorgente dei file nel tuo sito, non hai bisogno di includere il percorso completo ( http://... ) poichè questo implica che tu abbia attive le connessioni server2server senza restrizioni ( se ti interessa, vedi nel pannello di controllo di av ).

    Detto questo, puoi semplicemente fare:
    Codice PHP:
    echo file_get_contents('filedaaprire.txt');

  9. #9
    Guest

    Predefinito

    ok, grazie per le info javascripter

    mikipari se devi leggere da un file tipo csv secondo me ti conviene usare la funzione file()
    è molto utile perchè ti legge tutto il file in un colpo solo e te lo salva in un array di stringhe, una per ciascuna riga, molto più comodo che averlo tutto in un'unica stringa!

    esempio:
    Codice PHP:
    $file = file("./nomefile.txt")
    //per leggere i dati:
    echo $file[0]; //stampa la prima riga
    echo $file[4]; //stampa la quinta riga
    echo $file[2]; //e così via...
    dai un'occhiata alla documentazione: http://php.net/manual/en/function.file.php

  10. #10
    Guest

    Predefinito grazie

    ho provato ad inserire l'URL senza http... e funziona!
    grazie!

    lascio aperta la discussione ancora un po' perchè probabilmente fra un po' avrò bisogno per scrivere nei file

    per adesso ancora grazie

  11. #11
    Guest

    Predefinito scrivere

    grazie a chi mi ha consigliato sono riuscito anche a scrivere
    non so come si fa a chiudere la discussione, ma si può fare
    grazie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •