Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    1

    Help inviare una HTTP POST REQUEST da pagina web

    Ragazzi mi servirebbe realizzare una pagina web che al suo caricamento invii una http post request. Girando sul web ho trovato questo codice:

    /*
    ** The function:
    */

    function PostRequest($url, $referer, $_data) {

    // convert variables array to string:
    $data = array();
    while(list($n,$v) = each($_data)){
    $data[] = "$n=$v";
    }
    $data = implode('&', $data);
    // format --> test1=a&test2=b etc.

    // parse the given URL
    $url = parse_url($url);
    if ($url['scheme'] != 'http') {
    die('Only HTTP request are supported !');
    }

    // extract host and path:
    $host = $url['host'];
    $path = $url['path'];

    // open a socket connection on port 80
    $fp = fsockopen($host, 80);

    // send the request headers:
    fputs($fp, "POST $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data);

    $result = '';
    while(!feof($fp)) {
    // receive the results of the request
    $result .= fgets($fp, 128);
    }

    // close the socket connection:
    fclose($fp);

    // split the result header from the content
    $result = explode("\r\n\r\n", $result, 2);

    $header = isset($result[0]) ? $result[0] : '';
    $content = isset($result[1]) ? $result[1] : '';

    // return as array:
    return array($header, $content);
    }



    /*
    ** The example:
    */

    // submit these variables to the server:
    $data = array(
    'test' => 'foobar',
    'okay' => 'yes',
    'number' => 2
    );

    // send a request to example.com (referer = jonasjohn.de)
    list($header, $content) = PostRequest(
    "http://www.example.com/",
    "http://www.jonasjohn.de/",
    $data
    );

    // print the result of the whole request:
    print $content;

    // print $header; --> prints the headers

    Non sono però riuscito a capirne il funzionamento... o meglio ci ho provato operando nel seguente modo:

    - Ho creato una pagina PHP e nell'header ho dichiarato la funzione
    function PostRequest($url, $referer, $_data) {
    <?php
    // convert variables array to string:
    $data = array();
    while(list($n,$v) = each($_data)){
    $data[] = "$n=$v";
    ................
    ...............
    // return as array:
    return array($header, $content);
    }?>

    - Poi nel body ho richiamato la funzione
    <?php
    PostRequest("http://www.SITO.COM", "http://www.SITO.org/PATH/SCRIPT.php?id=0000", "CORPO_DELLA_REQUEST");
    ?>

    - Ho salvato la pagina chiamandola prova.php e l'ho caricata in un mio spazio web. Dopodichè ho avviato la pagina e mi dà un'errore dicendomi che il parametro _data passato alla funzione non è un'array...

    Non mi è chiaro il funzionamento di questa funzione; qualcuno può aiutarmi su come inviare una http post request da una pagina web? Grazie

    Ciao a tutti

  2. #2
    ciao,
    il mio è solo un piccolo aiuto perchè ora come ora non ho molto tempo, forse qualcuno dopo potrà essere più esauriente di me.

    Non ho letto lo script con attenzione.

    Lo script, da quello che ho intuito, apre una connessione sulla porta 80 del server al quale indirizzi la richiesta. Successivamente invia la richiesta con il protocollo post.

    Se vuoi rifarti uno script dall'inizio l'idea è quella. Apri una connessione tcp con lo socket alla 80 ed invii la richiesta tramite http. forse questo rfc riguardo ad http 1.1 ti potrà essere di aiuto:
    http://www.faqs.org/rfcs/rfc2616.html

    Attento però! molti host disattivano la possibilità di aprire socket con connessione non locali. Quindi il tuo script funzionerebbe solo se lo fai girare in locale o se hai i permessi per fare la connessione remota dal tuo host/hosting.

    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.