首页 > 开发 > PHP > 正文

模拟表单提交的例子

2024-05-04 22:55:40
字体:
来源:转载
供稿:网友
<?php
// simple post method
// version 1.0 by andrus ([email protected])

// disclaimer:
// everyone can change or use this code however and wherever they want ;)

// nb! for posting to microsoft platform webservers you may need to change newlines "/n" to "/r/n"
// microsoft always breaks standards ...

    // send out "browser" headers
    function send_headers ($fp) {
        fputs ($fp, "accept: */*/n");
        fputs ($fp, "accept-language: en/n");
        fputs ($fp, "connection: keep-alive/n");
        fputs ($fp, "user-agent: mozilla/4.0 (compatible; msie 5.5; windows 98)/n");
    }

    // post data and return reply
    function post_data ($host, $url, $data) {
        $fp = @fsockopen ($host, 80, $errno, $errstr, 120);
        $ret = "";
                if (strncasecmp ($url, "http://", 7) == 0) $url = substr ($url, 7);
        $p = strpos ($url, '/');
        if (empty ($p)) {
            $req = "/";
        } else {
            $req = substr ($url, $p);
        }
        if ($fp) {
            fputs ($fp, "post $req http/1.0/n");
            send_headers ($fp);
            fputs ($fp, "content-type: application/x-www-form-urlencoded/n");
            $out = "";
            while (list ($k, $v) = each ($data)) {
                if(strlen($out) != 0) $out .= "&";
                $out .= rawurlencode($k). "=" .rawurlencode($v);
            }
            $out = trim ($out);
            fputs ($fp, "content-length: ".strlen($out)."/n/n");
            fputs ($fp, "$out");
            fputs ($fp, "/n");
            while(!feof($fp)){
                $ret .= fgets($fp,128);
            }
        fclose ($fp);
        }
        return $ret;
    }
// example how to use:

// following code will post variables "login" and "pass" to server "www.something.com" script "/submit.php"
$reply = post_data ("www.something.com", "/submit.php", array ("login" => $username, "pass" => $password));


?>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表