zoukankan      html  css  js  c++  java
  • php 利用fsockopen GET/POST 提交表单及上传文件

    1.GET

    get.php

    [php] view plain copy
     
    1. <?php  
    2. $host = 'demo.fdipzone.com';  
    3. $port = 80;  
    4. $errno = '';  
    5. $errstr = '';  
    6. $timeout = 30;  
    7. $url = '/socket/getapi.php';  
    8.   
    9. $param = array(  
    10.     'name' => 'fdipzone',  
    11.     'gender' => 'man'  
    12. );  
    13.   
    14. $url = $url.'?'.http_build_query($param);  
    15.   
    16. // create connect  
    17. $fp = fsockopen($host, $port, $errno, $errstr, $timeout);  
    18.   
    19. if(!$fp){  
    20.     return false;  
    21. }  
    22.   
    23. // send request  
    24. $out = "GET ${url} HTTP/1.1 ";  
    25. $out .= "Host: ${host} ";  
    26. $out .= "Connection:close ";  
    27.   
    28. fputs($fp, $out);  
    29.   
    30. // get response  
    31. $response = '';  
    32. while($row=fread($fp, 4096)){  
    33.     $response .= $row;  
    34. }  
    35.   
    36. fclose($fp);  
    37.   
    38. $pos = strpos($response, " ");  
    39. $response = substr($response, $pos+4);  
    40.   
    41. echo $response;  
    42. ?>  

    getapi.php

    [php] view plain copy
     
    1. <?php  
    2. $name = $_GET['name'];  
    3. $gender = $_GET['gender'];  
    4.   
    5. echo 'name='.$name.'<br>';  
    6. echo 'gender='.$gender;  
    7. ?>  

    2.POST

    post.php

    [php] view plain copy
     
    1. <?php  
    2. $host = 'demo.fdipzone.com';  
    3. $port = 80;  
    4. $errno = '';  
    5. $errstr = '';  
    6. $timeout = 30;  
    7. $url = '/socket/postapi.php';  
    8.   
    9. $param = array(  
    10.     'name' => 'fdipzone',  
    11.     'gender' => 'man',  
    12.     'photo' => file_get_contents('photo.jpg')  
    13. );  
    14.   
    15. $data = http_build_query($param);  
    16.   
    17. // create connect  
    18. $fp = fsockopen($host, $port, $errno, $errstr, $timeout);  
    19.   
    20. if(!$fp){  
    21.     return false;  
    22. }  
    23.   
    24. // send request  
    25. $out = "POST ${url} HTTP/1.1 ";  
    26. $out .= "Host:${host} ";  
    27. $out .= "Content-type:application/x-www-form-urlencoded ";  
    28. $out .= "Content-length:".strlen($data)." ";  
    29. $out .= "Connection:close ";  
    30. $out .= "${data}";  
    31.   
    32. fputs($fp, $out);  
    33.   
    34. // get response  
    35. $response = '';  
    36. while($row=fread($fp, 4096)){  
    37.     $response .= $row;  
    38. }  
    39.   
    40. fclose($fp);  
    41.   
    42. $pos = strpos($response, " ");  
    43. $response = substr($response, $pos+4);  
    44.   
    45. echo $response;  
    46. ?>  

    postapi.php

    [php] view plain copy
     
    1. <?php  
    2. define('UPLOAD_PATH', dirname(__FILE__).'/upload');  
    3.   
    4. $name = $_POST['name'];  
    5. $gender = $_POST['gender'];  
    6. $photo = $_POST['photo'];  
    7.   
    8. $filename = time().'.jpg';  
    9. file_put_contents(UPLOAD_PATH.'/'.$filename, $photo, true);  
    10.   
    11. echo 'name='.$name.'<br>';  
    12. echo 'gender='.$gender.'<br>';  
    13. echo '<img src="upload/'.$filename.'">';  
    14. ?>  

    3.上传文件

    file.php

    [php] view plain copy
     
    1. <?php  
    2. $host = 'demo.fdipzone.com';  
    3. $port = 80;  
    4. $errno = '';  
    5. $errstr = '';  
    6. $timeout = 30;  
    7. $url = '/socket/fileapi.php';  
    8.   
    9. $form_data = array(  
    10.     'name' => 'fdipzone',  
    11.     'gender' => 'man',  
    12. );  
    13.   
    14. $file_data = array(  
    15.     array(  
    16.         'name' => 'photo',  
    17.         'filename' => 'photo.jpg',  
    18.         'path' =>'photo.jpg'  
    19.     )  
    20. );  
    21.   
    22. // create connect  
    23. $fp = fsockopen($host, $port, $errno, $errstr, $timeout);  
    24.   
    25. if(!$fp){  
    26.     return false;  
    27. }  
    28.   
    29. // send request  
    30. srand((double)microtime()*1000000);  
    31. $boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);  
    32.   
    33. $data = "--$boundary ";  
    34.   
    35. // form data  
    36. foreach($form_data as $key=>$val){  
    37.     $data .= "Content-Disposition: form-data; name="".$key."" ";  
    38.     $data .= "Content-type:text/plain ";  
    39.     $data .= rawurlencode($val)." ";  
    40.     $data .= "--$boundary ";  
    41. }  
    42.   
    43. // file data  
    44. foreach($file_data as $file){  
    45.     $data .= "Content-Disposition: form-data; name="".$file['name'].""; filename="".$file['filename']."" ";  
    46.     $data .= "Content-Type: ".mime_content_type($file['path'])." ";  
    47.     $data .= implode("",file($file['path']))." ";  
    48.     $data .= "--$boundary ";  
    49. }  
    50.   
    51. $data .="-- ";  
    52.   
    53. $out = "POST ${url} HTTP/1.1 ";  
    54. $out .= "Host:${host} ";  
    55. $out .= "Content-type:multipart/form-data; boundary=$boundary "; // multipart/form-data  
    56. $out .= "Content-length:".strlen($data)." ";  
    57. $out .= "Connection:close ";  
    58. $out .= "${data}";  
    59.   
    60. fputs($fp, $out);  
    61.   
    62. // get response  
    63. $response = '';  
    64. while($row=fread($fp, 4096)){  
    65.     $response .= $row;  
    66. }  
    67.   
    68. fclose($fp);  
    69.   
    70. $pos = strpos($response, " ");  
    71. $response = substr($response, $pos+4);  
    72.   
    73. echo $response;  
    74. ?>  

    fileapi.php

    [php] view plain copy
     
    1. <?php  
    2. define('UPLOAD_PATH', dirname(__FILE__).'/upload');  
    3.   
    4. $name = $_POST['name'];  
    5. $gender = $_POST['gender'];  
    6.   
    7. $filename = time().'.jpg';  
    8.   
    9. echo 'name='.$name.'<br>';  
    10. echo 'gender='.$gender.'<br>';  
    11. if(move_uploaded_file($_FILES['photo']['tmp_name'], UPLOAD_PATH.'/'.$filename)){  
    12.     echo '<img src="upload/'.$filename.'">';  
    13. }  
    14. ?>  


    源码下载地址:点击下载

  • 相关阅读:
    桃花扇
    望故乡
    Unity资源加载方式总结
    [Spark]-RDD详解之变量&操作
    [Spark]-RDD之创建
    [Spark]-RDD初识
    [Spark]-编译(2.3.1)&部署(YARN-Cluster)
    [Spark]-背景
    [Hive]-常规优化以及执行计划解析
    [转载]线上应用故障排查之一:高memory占用
  • 原文地址:https://www.cnblogs.com/soundcode/p/6890214.html
Copyright © 2011-2022 走看看