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





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.

 

11 pensieri su “Prelevare il contenuto di una pagina web passando i parametri via POST (PHP) - -oldpost-

  1. @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. 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. 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

  4. 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.

  5. 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

Rispondi a Blower Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *