Prelevare il contenuto di una pagina web passando i parametri via POST (PHP) 11





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.

Seguimi su twitter : @ironico

11 thoughts on “Prelevare il contenuto di una pagina web passando i parametri via POST (PHP)

  1. Reply Gennaro Varriale nov 20,2008 20:31

    @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=”; )

  2. Reply Pitbull nov 20,2008 17:17

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

  3. Reply ANTONIO nov 9,2008 11:11

    grande gennaro

  4. Reply Gennaro Varriale ago 31,2008 08:58

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

  5. Reply marco ago 19,2008 16:53

    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

  6. Reply Angelo lug 3,2008 11:10

    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.

  7. Reply Gennaro Varriale dic 10,2007 20:20

    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.

  8. Reply Blower dic 10,2007 16:12

    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

  9. Pingback: Funzione php per tradurre testi utilizzando Google Translator « Gennaro Varriale »

  10. Reply Gennaro Varriale ott 29,2007 17:12

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

  11. Reply Chris ott 29,2007 16:42

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

Leave a Reply

  

  

  

Per essere informato sui miei contenuti - Email: