php 模拟header,php模拟header

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 ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值