Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    recuperare contenuto pagina dopo login in automatico

    Salve,
    devo recuperare ogni giorno il contenuto aggiornato di una pagina web, dopo però aver effettuato un login.

    Mi occorre quindi capire se è possibile farlo in automatico
    Luca L.B.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    E' possibbile farlo in automatico anche con un semplicissimo file_get_contents.
    Però, il procedimento è un po' lungo e laborioso.
    Per prima cosa ti serve capire cosa succede dopo che fai il login. Un sito che abbia un login interno può "vedere" se un utente è collegato in 3 metodi.
    1- Il sito conserva un singolo cookie, il sessionId (può trovarsi in nomi diversi).
    2- Il sito non conserva il sessionId su cookie ma lo aggiunge come campo GET alla fine di ogni indirizzo.
    3- Il sito conserva più cookie (possibilmente criptati) con tutto quello che serve per autenticarsi.

    Seconda cosa devi vedere come funziona il login. Se usa GET o POST per il passaggio dati. Devi accertarti se usa dei campi hidden o roba del genere. Basta andare a guardare l'html relativo alla pagina.

    Ora non ti resta che scrivere il codice. Ti serviranno le seguenti funzioni:
    -get_headers
    -stream_context_set_default
    -stream_context_create (uguale alla precedente ma ti servirà per il file_get_contents)
    -file_get_contents

    Come fare?
    Per prima cosa ti serve fare il login.
    Usi la funzione get_headers con l'url che punta all'action del form del login. Questa funzione usa il "default stream context". Ti serve modificarlo in modo che nella richiesta invii pure le variabili GET/POST. La guida di php lo spiega abbastanza chiaramente.
    Una volta ottenuti gli header (devi mettere nel secondo parametro 1 per avere l'array scritto in modo corretto) puoi ottenere i cookie. Questi saranno una stringa (o un array nel caso di più cookie) dentro $headers["Set-Cookie"].
    Ora li devi formattare in modo corretto, un semplice serie di implode,explode,foreach può andare più che bene. Una volta ottenuti crei un stream context mettendo i cookie che hai appena ottenuto. Per farlo c'è il stream_context_create.
    Ora puoi usare il file_get_contents. Metti come terzo parametro il tuo context.
    Ecco la tua pagina

    Da come hai visto non è semplicissimo. Ma neache troppo difficile. Per un programmatore che abbia un minimo di conoscenze sul php basta un'oretta. La cosa fondamentale è leggere bene la documentazione su queste 4 funzioni, che alla fine non sono poi così difficili.

    Buona fortuna,

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    tutta la mia stima simo vista la tua età :P

    metà dei tuoi coetanei manco sanno dell'esistenza di quelle funzioni.

    comunque in alternativa si può fare con curl (cosa che io personalmente preferisco) dacci un'occhiata poi se vuoi.
    sometimes it's just like teaching pigs how to fly

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Originariamente inviato da nickcv
    tutta la mia stima simo vista la tua età :P

    metà dei tuoi coetanei manco sanno dell'esistenza di quelle funzioni.

    comunque in alternativa si può fare con curl (cosa che io personalmente preferisco) dacci un'occhiata poi se vuoi.
    Grazie

    Comunque cURL lo conoscevo già ma mi trovo meglio con gli stream_context.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.