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


發佈了52 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章