Categorie


Spesso si è nella necessità di prelevare il contenuto di una pagina web, per estrapolare dati o per effettuare qualche conversione. Con la seguente funzione è possibile catturare il contenuto di una pagina web , passando i parametri tramite POST.


La funzione accetta l’indirizzo della pagina web e l’elenco dei parametri (gia codificati tramite urlencode) e restutisce la pagina catturata.
I parametri quindi devono essere della forma : ‘var1=xxx&var2=yyy’:

Dove i valori di xxx e yyy devono essere codificati tramite urlencode()

La funzione prima estrapola dall’ url (tramite parse_url) il nome dell’host, il numero della porta, ed il percorso (path). Quindi calcola la lunghezza delle variabili da inviare ($contentLength). A questo punto prepara l’header della richiesta HTTP da effettuare utilizzando questi dati.

Una volta preparato l’header apre una connessione socket con l’host (tramite fsockopen), invia la richiesta e preleva la risposta del server (il contenuto della pagina web) inserendola nella variabile buffer che verra poi restituita alla funzione.

La parte fondamentale di questa funzione è la costruzione dell’Header (contenuta nella variabile $out).

Si chiede al server HTTP di prelevare una pagina situata nel percorso $path, specificando di accettare i parametri tramite POST, quindi imposta il tipo di contenuto a application/x-www-form-urlencoded (necessario per passare i parametri tramite post, come se fossero inviati da una form). A questo punto si accodano i parametri codificati tramite urlencode, dopo averne specificato la lunghezza.

E’ possibile migliorare la funzione in modo da passare i parametri tramite un array ed effettuare l’urlencoding al suo interno.

Per esempio, passando un array in $params di questo tipo : array( ‘var1′=>’xxx’,'var2′=>’yyy’)

Per far ciò bisogna aggiungere le seguenti righe all’inizio della funzione.

Nell’articolo “Funzione php per tradurre testi utilizzando Google Translator” mostro come  utilizzare questa funzione per tradurre testi tramite google.

Successivamente mostrerò come creare un plugin per wordrpess per tradurre i post in automatico.

 

« « Ingrandire immagini nelle pagine Web con Javascript Image Magnification | Funzione php per tradurre testi utilizzando Google Translator » »

Articoli correlati

Gestione amici in facebook - Gennaro Varriale.it
Gli amici – Come creare un applicazione per FaceBook (parte 2)

Nel primo articolo Come creare un applicazione per FaceBook abbiamo visto come creare una semplice applicazione, ora vediamo di scoprire le funzioni...


drupal 6
Rilasciato Drupal 6

Dopo un anno di sviluppo, finalmente, è stato rilasciato Drupal 6.0. La nuova versione contiene nuove funzionalità e migliora le caretteristiche...


Prelevare il contenuto di una pagina web passando i parametri via POST (PHP)
Creazione dinamica dei pdf in php tramite FPdf

Tramite la libreria gratuita FPDF possiamo creare facilmente dei file pdf . FPDF non richiede alcuna estensione (eccetto la libreria zlib per attivare...


Seguimi su twitter : @ironico

11 commenti

  • @Pitbull: non ho più quel file. Segnalami il tipo di errore, magari ti posso essere d’aiuto. Stai attento a copiare bene il testo e controlla gli apici che non sono molto eviedenti nel post (es $buffer=”; )

  • Pitbull scrive:

    potrei avere il file php precedentemente citato… purtroppo non riesco a risolvere …credo di non essere troppo simpatico al server …da sempre errore interno :)

  • ANTONIO scrive:

    grande gennaro

  • @Marco: forse problemi di connessione. Prova a mettere degli echo, prima del ciclo o durante, per vedere meglio il problema.

  • marco scrive:

    Ho usato la funzione post_url, ma sembra non non finisca mai l’elaborare lo stato del browser è: In attesa di….
    da cosa potrebbe dipendere?

    Grazie molte
    ciao

  • Angelo scrive:

    Salve, ho utilizzato anche io la funzione di traduzione. Ottima funzione soprattutto in abbinamento con postURL. Purtroppo anche a me non traduce la prima e l’ultima parola. Potrei gentilmente avere qualche info in più? Grazie.

  • Ciao,
    $buffer=”; //svuota il buffer.
    Per quanto rigarda il primo problema ti ho inviato via email, un file php funzionante, fammi sapere se ci sono problemi.

  • Blower scrive:

    Salve, ho utilizzato lo script della funzione postURL , in abbinamento alla funzione traduci per google traslation, ho riscontrato pero’ un problema che non riesco a risolvere, nella traduzione vengono ignorati ( quindi riportati senza traduzione) la prima e l’ultima parola, quasi se stesse ad indicare che non vengono riconosciuti i tag.

    P.s. ho una piccola domanda sulla funzione postURL, nella seconda riga
    $buffer=”;
    la variabile buffer viene inizializzata come stringa vuota ? quindi sono 2 apici singolo , perche’ se si tratta di un doppio apice manca quello che chiu de la stringa ed il parse php restituisce errore.

    aspetto qualche indicazione, grazie a tutti

  • [...] far ciò ci avvaliamo della funzione postURL che ho introdotto nell’articolo ‘Prelevare il contenuto di una pagina web passando i parametri via POST (PHP)’“. Ecco la [...]

  • Vero Chris. Inoltre con un paio di righe è possibile inserire sia referer che cookie. Quindi ancora più interessante ;)

  • Chris scrive:

    Nei blog senza captcha per i commenti spam, con una funzione del genere potresti fare un po’ di danni eheh :-D

Rispondi

Attenzione : Per inserire codice html/php o caratteri speciali utilizza Postable. Postable converte i caratteri speciali del tuo commento.
XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Login with:
Powered by Sociable!