Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: file_get_conntents

  1. #1

    file_get_conntents

    ciao a tutti.
    vorrei sapere se tramite la funzione come in oggetto è possibile accedere a dei dati contenuti in una pagina protetta impostando nello script username e password?
    Se si mi illuminate per piacere?
    Grazie mille.

  2. #2
    Ti basta un'istruzione condizionale (if... else)
    Una soluzione grezza e ridotta all'osso solo per illustrartene il funzionamento, se come immagino è quello che ti manca di sapere.

    Codice PHP:
    if ($user_id == "Paolo" && $password == "myPw") {
         
    $content file_get_contents("dirname/filename");
         
    // nella variabile $content hai il contenuto della tua pagina "protetta"
    } else {
         echo 
    "Spiacente, parametri di accesso non validi.
    "
    ;

    Nota che file_get_contents legge il contenuto del file, pertanto se questo contiene istruzioni PHP non verranno eseguite. Se hai bisogno di un file PHP per eseguire le istruzioni che esso contiene, cerca include(), include_once(), require() e require_once() sul manuale di PHP.
    Le minime precauzioni di sicurezza prevedono che user ID e pw siano in un DB, che la pw non sia in chiaro, ma hashata (magari con l'uso di md5()).

    Spero di esserti stato d'aiuto.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  3. #3
    forse non mi sono spiegato.
    io devo recuperare dei dati da una pagina protetta in un sito esterno al mio.

  4. #4
    Ho capito. Sì, per pagine esterne al dominio in cui opera il tuo script puoi usare file_get_contents() se hai i wrapper abilitati nel php.ini.

    I wrapper sono disponibili da PHP 4.0.4, quello che interessa a te è allow_url_fopen, che deve essere impostato a TRUE (dovrebbe essere abilitato di default).

    file_get_contents() ti restituisce l'html generato della pagina che vuoi aprire, ma non gli header HTTP.
    Per leggere quelli devi usare le funzioni CURL, che ti permettono di interfacciarti con le risorse via HTTP creando proprio un client (CURL = client-URL) e configurando tutti i parametri che entrano in gioco nella richiesta client-server.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  5. #5
    Comunque provare è gratis, ti bastava fare:

    Codice PHP:
    <?php

    echo htmlentities(file_get_contents("http://www.google.it"));

    ?>
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  6. #6
    grazie per la risposta.
    Avevo già provato cosi
    Codice PHP:
    <?php
    $pag 
    file_get_contents('http://customers.atlantisworld.it/awg/private/actions/ApparecchiGestoreNewAction.do?parent=7&page=7');
    echo 
    $pag;
    ?>
    ma questa è la pagina a cui accedo di solito dal browser essendomi prima autenticato e infatti mi restituisce il form del login e non la pagina stessa.

    Provo come hai detto tu con CURL.

    Grazie ancora

  7. #7
    Azz...
    Pardon, ho capito adesso cosa volevi fare, il LOGIN ad un'area protetta in una pagina php!

    Con file_get_contents() no, non puoi farlo, perché non puoi settare le variabili POST, che vengono inviate proprio nell'header HTTP.
    Devi usare necessariamente la libreria CURL, che ti permette di fare proprio quello
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  8. #8
    me la devo studiare, non la conosco proprio.

    Grazie per le risposte.

  9. #9

    Spunto

    Originariamente inviato da rickystra
    me la devo studiare, non la conosco proprio.

    Grazie per le risposte.
    Ok ti dò una mano:

    Codice PHP:
    <?php
    function get_http_response($URL) {
        
    $handle curl_init(); // apriamo una sessione CURL, il cui identificativo è $handle;
        // curl_setopt() imposta l'opzione che specifichi come secondo parametro con il valore che specifichi nel terzo:
        // (il primo parametro è sempre l'identificativo di connessione!)
        
    curl_setopt($handleCURLOPT_URL$URL); // qui gli diciamo la risorsa da raggiungere
        
    curl_setopt($handleCURLOPT_HEADERfalse); // qui specifichiamo di non includere nell'output l'intestazione che gli forniamo in input
        // adesso confezioniamo l'header HTTP:
        
    $http_header = array(
            
    "Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3",
            
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7",
            
    "Keep-Alive: 300",
            
    "Connection: keep-alive",
            
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2"
        
    );
        
    // ora gli diamo in pasto l'array di headers per inserirli nella richiesta:
        
    curl_setopt($handleCURLOPT_HTTPHEADER$http_header);
        
    curl_setopt($handleCURLOPT_FRESH_CONNECTtrue); // questa istruzione è per evitare di farsi restituire una versione cache della risorsa da richiedere
        
    curl_setopt($handleCURLOPT_RETURNTRANSFERtrue); // impostando a TRUE questa opzione gli imponiamo di non stamparla, ma di restituirla come output della funzione di esecuzione della chiamata curl_exec():
        
    $content curl_exec($handle); // facciamo eseguire la richiesta da curl_exec() e ne intercettiamo il responso restituito nella variabile $content;
        
    curl_close($handle); // ricordarsi di chiudere le connessioni aperte... SEMPRE! (O ti giochi la memoria)
        
    return $content;
    }

    ?>
    Cominciando a lavorarci vedrai che CURL è una vera svolta.
    Associandola a dei cronjob puoi costruirci gli spider più svariati, mirati al raggiungimento delle informazioni che vuoi attingere dalla rete.

    Questo è solo uno spunto; per inviare valori POST nell'header devi scoprire come si forma un header di richiesta HTTP che posta dei dati.
    Sai già come procedere?
    Se no, ti consiglio la cosa più semplice: vedere un header di una richiesta reale che fai con il browser. Ci sono molti strumenti utili allo scopo, io ti consiglio di provare Tamper Data, come estensione di Firefox.

    Dopo averlo installato e riavviato FF, lo trovi sotto "Strumenti" > "Modifica con Tamper Data".
    Poi fai una richiesta qualsiasi, aprendo per esempio la tua home page: in Tamper Data vedrai tante righe per ogni richiesta HTTP che il tuo browser invia.
    Selezionandone una, nei riquadri sottostanti vedrai i dettagli: a sinistra la richiesta che ha fatto il tuo browser, a destra il responso che ottiene dal server.

    Per ogni pagina saprai già che la prima richiesta coincide con il documento sito all'URL richiesto, dopodiché per ogni script, immagine, foglio di stile e altri oggetti che abbiano una origine esterna il browser lancia ulteriori richieste per avere tutto il materiale per comporre la pagina.

    Hai un po' di materiale per iniziare!
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  10. #10
    sei un grande, domani ci provo e ti faccio sapere.

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.