温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php如何使用fsockopen GET/POST提交表单及上传文件

发布时间:2021-07-01 11:38:10 阅读:225 作者:小新 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍了php如何使用fsockopen GET/POST提交表单及上传文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

php利用fsockopen GET/POST提交表单及上传文件,具体内容如下

1.GET

get.php

<?php 
$host 'demo.fdipzone.com'$port 80$errno ''$errstr ''$timeout 30$url '/socket/getapi.php'; 
 
$param array( 
  'name' => 'fdipzone', 
  'gender' => 'man' 
); 
 
$url $url.'?'.http_build_query($param); 
 
// create connect 
$fp fsockopen($host$port$errno$errstr$timeout); 
 
if(!$fp){ 
  return false; 
} 
 
// send request 
$out "GET ${url} HTTP/1.1\r\n"$out .= "Host: ${host}\r\n"$out .= "Connection:close\r\n\r\n"; 
 
fputs($fp$out); 
 
// get response 
$response ''while($row=fread($fp4096)){ 
  $response .= $row; 
} 
 
fclose($fp); 
 
$pos strpos($response"\r\n\r\n"); 
$response substr($response$pos+4); 
 
echo $response?>

getapi.php

<?php 
$name $_GET['name']; 
$gender $_GET['gender']; 
 
echo 'name='.$name.'<br>'echo 'gender='.$gender?>

2.POST

post.php

<?php 
$host 'demo.fdipzone.com'$port 80$errno ''$errstr ''$timeout 30$url '/socket/postapi.php'; 
 
$param array( 
  'name' => 'fdipzone', 
  'gender' => 'man', 
  'photo' => file_get_contents('photo.jpg') 
); 
 
$data http_build_query($param); 
 
// create connect 
$fp fsockopen($host$port$errno$errstr$timeout); 
 
if(!$fp){ 
  return false; 
} 
 
// send request 
$out "POST ${url} HTTP/1.1\r\n"$out .= "Host:${host}\r\n"$out .= "Content-type:application/x-www-form-urlencoded\r\n"$out .= "Content-length:".strlen($data)."\r\n"$out .= "Connection:close\r\n\r\n"$out .= "${data}"; 
 
fputs($fp$out); 
 
// get response 
$response ''while($row=fread($fp4096)){ 
  $response .= $row; 
} 
 
fclose($fp); 
 
$pos strpos($response"\r\n\r\n"); 
$response substr($response$pos+4); 
 
echo $response?>

postapi.php

<?php 
define('UPLOAD_PATH'dirname(__FILE__).'/upload'); 
 
$name $_POST['name']; 
$gender $_POST['gender']; 
$photo $_POST['photo']; 
 
$filename time().'.jpg'file_put_contents(UPLOAD_PATH.'/'.$filename$phototrue); 
 
echo 'name='.$name.'<br>'echo 'gender='.$gender.'<br>'echo '<img src="upload/'.$filename.'">'?>

3.上传文件

file.php

<?php 
$host = 'demo.fdipzone.com'; 
$port = 80$errno = ''; 
$errstr = ''; 
$timeout = 30$url = '/socket/fileapi.php'; 
 
$form_data = array( 
  'name' => 'fdipzone', 
  'gender' => 'man', 
); 
 
$file_data = array( 
  array( 
    'name' => 'photo', 
    'filename' => 'photo.jpg', 
    'path' =>'photo.jpg' 
  ) 
); 
 
// create connect 
$fp = fsockopen($host$port$errno$errstr$timeout); 
 
if(!$fp){ 
  return false; 
} 
 
// send request 
srand((double)microtime()*1000000); 
$boundary = "---------------------------".substr(md5(rand(0,32000)),0,10); 
 
$data = "--$boundary\r\n"; 
 
// form data 
foreach($form_data as $key=>$val){ 
  $data .= "Content-Disposition: form-data; name=\"".$key."\"\r\n"; 
  $data .= "Content-type:text/plain\r\n\r\n"; 
  $data .= rawurlencode($val)."\r\n"; 
  $data .= "--$boundary\r\n"; 
} 
 
// file data 
foreach($file_data as $file){ 
  $data .= "Content-Disposition: form-data; name=\"".$file['name']."\"; filename=\"".$file['filename']."\"\r\n"; 
  $data .= "Content-Type: ".mime_content_type($file['path'])."\r\n\r\n"; 
  $data .= implode("",file($file['path']))."\r\n"; 
  $data .= "--$boundary\r\n"; 
} 
 
$data .="--\r\n\r\n"; 
 
$out = "POST ${url} HTTP/1.1\r\n"$out .= "Host:${host}\r\n"$out .= "Content-type:multipart/form-data; boundary=$boundary\r\n"// multipart/form-data 
$out .= "Content-length:".strlen($data)."\r\n"$out .= "Connection:close\r\n\r\n"$out .= "${data}"; 
 
fputs($fp$out); 
 
// get response 
$response = ''; 
while($row=fread($fp4096)){ 
  $response .= $row; 
} 
 
fclose($fp); 
 
$pos = strpos($response"\r\n\r\n"); 
$response = substr($response$pos+4); 
 
echo $response?>

fileapi.php

<?php 
define('UPLOAD_PATH'dirname(__FILE__).'/upload'); 
 
$name $_POST['name']; 
$gender $_POST['gender']; 
 
$filename time().'.jpg'; 
 
echo 'name='.$name.'<br>'echo 'gender='.$gender.'<br>'if(move_uploaded_file($_FILES['photo']['tmp_name'], UPLOAD_PATH.'/'.$filename)){ 
  echo '<img src="upload/'.$filename.'">'; 
} 
?>

感谢你能够认真阅读完这篇文章,希望小编分享的“php如何使用fsockopen GET/POST提交表单及上传文件”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×