PHP Socket方式提交的post详解

  •   2009-07-31/22:42
  • php下POST报文到主机 ,post提交利用代码

    <?
    /*
    ** POST报文到主机
    */
    function PostToHost($url, $data) {
    $url = parse_url($url);
    if (!$url) return "couldn\'t parse url";
    if (!isset($url[\'port\'])) { $url[\'port\'] = ""; }
    if (!isset($url[\'query\'])) { $url[\'query\'] = ""; }

    $encoded = "";
    while (list($k,$v) = each($data)) {
    $encoded .= ($encoded ? "&" : "");
    $encoded .= rawurlencode($k)."=".rawurlencode($v);
    }
    $port = $url[\'port\'] ? $url[\'port\'] : 80;
    $fp = fsockopen($url[\'host\'], $port, $errno, $errstr);
    if (!$fp) return "Failed to open socket to $url[host] $port ERROR: $errno - $errstr";
    fputs($fp, sprintf("POST %s%s%s HTTP/1.0\\n", $url[\'path\'], $url[\'query\'] ? "?" : "", $url[\'query\']));
    fputs($fp, "Host: $url[host]\\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\\n");
    fputs($fp, "Content-length: " . strlen($encoded) . "");
    fputs($fp, "Connection: close\\n\\n");
    fputs($fp, "$encoded\\n");
    $line = fgets($fp,1024);
    if (!eregi("^HTTP/1\\.. 200", $line)) return;
    $results = ""; $inheader = 1;
    while(!feof($fp)) {
    $line = fgets($fp,1024);
    if ($inheader && ($line == "" || $line == "")) {
    $inheader = 0;
    }
    elseif (!$inheader) {
    $results .= $line;
    }
    }
    fclose($fp);
    return $results;
    }/* end function PostToHost */
    ?>


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多