1.GET
01 <?php
02 $host = 'www.weizhifeng.net';
03 $fp = fsockopen($host, 80, $errno, $errstr, 30);
04 define('CRLF', "\r\n");
05 if (!$fp) {
06 echo "$errstr ($errno) ";
07 } else {
08 $body = '';
09 $header = 'GET /get.php HTTP/1.1' . CRLF;
10 $header .= 'Host: ' . $host . CRLF;
11 $header .= 'Accept: */*' . CRLF;
12 $header .= 'Accept-Encoding: gzip, deflate' . CRLF;
13 $header .= 'Connection: Close' . CRLF . CRLF;
14
15 $out = $header . $body;
16 fwrite($fp, $out);
17 while (!feof($fp)) {
18 echo fgets($fp, 128);
19 }
20 fclose($fp);
21 }
22 ?>
2.以Content-Type: application/x-www-form-urlencoded方式POST提交普通表单(即表单中没有文件需要上传)
view source
print?01 <?php
02 $host = 'www.weizhifeng.net';
03 $fp = fsockopen($host, 80, $errno, $errstr, 30);
04 define('CRLF', "\r\n");
05 if (!$fp) {
06 echo “$errstr ($errno)\n”;
07 } else {
08 $body = 'k1=v1&k2=v2&k3=v3';
09 $length = strlen($body);
10 $header = 'POST /post.php HTTP/1.1' . CRLF;
11 $header .= 'Host: ' . $host . CRLF;
12 $header .= 'Accept: */*' . CRLF;
13 $header .= 'Accept-Encoding: gzip, deflate' . CRLF;
14 $header .= 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' . CRLF;
15 $header .= 'Content-Length: ' . $length . CRLF; //重要
16 $header .= 'Connection: Close' . CRLF . CRLF;
17 $out = $header . $body;
18
19 fwrite($fp, $out);
20 while (!feof($fp)) {
21 echo fgets($fp, 128);
22 }
23 fclose($fp);
24 }
25 ?>
3. 以Content-Type: multipart/form-data方式POST提交普通表单(即表单中没有文件需要上传)
view source
print?01 <?php
02 $host = 'www.weizhifeng.net';
03 $fp = fsockopen($host, 80, $errno, $errstr, 30);
04 define('CRLF', "\r\n");
05 if (!$fp) {
06 echo “$errstr ($errno)\n”;
07 } else {
08 define('BOUNDARY', 'jeremywei' . md5(uniqid(microtime())));//定义分界符
09 //组装body
10 $body = '--' . BOUNDARY . CRLF;
11 $body .= 'Content-Disposition: form-data; name="k1"' . CRLF . CRLF;
12 $body .= 'v1' . CRLF;
13 $body = '--' . BOUNDARY . CRLF;
14 $body .= 'Content-Disposition: form-data; name="k2"' . CRLF . CRLF;
15 $body .= 'v2' . CRLF;
16 $body .= '--' . BOUNDARY . '--' . CRLF; //body内容结束
17 $length = strlen($body);
18
19 $header = 'POST /post.php' . ' HTTP/1.1' . CRLF;
20 $header .= 'Host: ' . $host . CRLF;
21 $header .= 'Accept: */*' . CRLF;
22 $header .= 'Accept-Encoding: gzip, deflate' . CRLF;
23 $header .= 'Content-Type: multipart/form-data; boundary=' . BOUNDARY . CRLF;
24 $header .= 'Content-Length: ' . $length . CRLF;
25 $header .= 'Connection: Close' . CRLF . CRLF;
26 $out = $header . $body;
27
28 fwrite($fp, $out);
29 while (!feof($fp)) {
30 echo fgets($fp, 128);
31 }
32 fclose($fp);
33 }
34 ?>
4. 以Content-Type: multipart/form-data方式POST提交包含文件的表单
view source
print?01 <?php
02 $host = 'www.weizhifeng.net';
03 $fp = fsockopen($host, 80, $errno, $errstr, 30);
04 define('CRLF', "\r\n");
05 if (!$fp) {
06 echo “$errstr ($errno)\n”;
07 } else {
08 define('BOUNDARY', 'wei' . md5(uniqid(microtime())));
09 //entity 分隔符
10 $body = '--' . BOUNDARY . CRLF;
11 //entity1 header
12 $body .= 'Content-Disposition: form-data; name="file"; filename="php.txt"' . CRLF;
13 //entity1 header 结束
14 $body .= 'Content-Type: text/plain' . CRLF . CRLF;
15 //entity1 body
16 $body .= 'filecontents...' . CRLF;
17 //entity 分隔符
18 $body .= '--' . BOUNDARY . CRLF;
19 //entity2 header
20 $body .= 'Content-Disposition: form-data; name="k1"' . CRLF . CRLF;
21 //entity2 body
22 $body .= 'v1' . CRLF;
23 //message body 结束
24 $body .= '--' . BOUNDARY . '--' . CRLF;
25
26 $length = strlen($body);
27 $header = 'POST /post.php' . ' HTTP/1.1' . CRLF;
28 $header .= 'Host: ' . $host . CRLF;
29 $header .= 'Accept: */*' . CRLF;
30 $header .= 'Accept-Encoding: gzip, deflate' . CRLF;
31 $header .= 'Content-Type: multipart/form-data; boundary=' . BOUNDARY . CRLF;
32 $header .= 'Content-Length: ' . $length . CRLF;
33 $header .= 'Connection: Close' . CRLF . CRLF;
34
35 fwrite($fp, $out);
36 while (!feof($fp)) {
37 echo fgets($fp, 128);
38 }
39 fclose($fp);
40 }
41 ?>