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($fp, 4096)){
$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($fp, 4096)){
$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, $photo, true);
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($fp, 4096)){
$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
# 表单
# 上传文件
# php实现表单提交上传文件功能
# JQuery打造PHP的AJAX表单提交实例
# php提交表单时判断 if($_POST[submit])与 if(isset($_POST[sub
# PHP 表单提交给自己
# PHP对表单提交特殊字符的过滤和处理方法汇总
# php不允许用户提交空表单(php空值判断)
# PHP防止表单重复提交的几种常用方法汇总
# php 多个submit提交表单 处理方法
# PHP如何通过表单直接提交大文件详解
# 具体内容
# 大家多多
# request
# send
# false
# HTTP
# Host
# return
# http_build_query
# man
# gender
# fp
# connect
# create
# strpos
# pos
# fclose
# _GET
相关文章:
建站之星展会模板:智能建站与自助搭建高效解决方案
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
建站ABC备案流程中有哪些关键注意事项?
如何快速搭建高效可靠的建站解决方案?
临沂网站制作公司有哪些,临沂第四中学官网?
如何获取开源自助建站系统免费下载链接?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
linux top下的 minerd 木马清除方法
学校免费自助建站系统:智能生成+拖拽设计+多端适配
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
如何用西部建站助手快速创建专业网站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
建站之星各版本价格是多少?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何设置并定期更换建站之星安全管理员密码?
如何在Windows虚拟主机上快速搭建网站?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
临沂网站制作企业,临沂第三中学官方网站?
如何选择高效可靠的多用户建站源码资源?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
大型企业网站制作流程,做网站需要注册公司吗?
如何在IIS中新建站点并配置端口与IP地址?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
盐城做公司网站,江苏电子版退休证办理流程?
微信小程序 input输入框控件详解及实例(多种示例)
建站之星如何优化SEO以实现高效排名?
定制建站价位费用解析与套餐推荐全攻略
如何快速登录WAP自助建站平台?
建站之星安装路径如何正确选择及配置?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
网站制作新手教程,新手建设一个网站需要注意些什么?
制作旅游网站html,怎样注册旅游网站?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
如何在香港免费服务器上快速搭建网站?
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何通过西部数码建站助手快速创建专业网站?
微课制作网站有哪些,微课网怎么进?
制作营销网站公司,淘特是干什么用的?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
模具网站制作流程,如何找模具客户?
常州企业建站如何选择最佳模板?
Android自定义控件实现温度旋转按钮效果
如何做静态网页,sublimetext3.0制作静态网页?
如何在腾讯云服务器快速搭建个人网站?
网站制作公司排行榜,四大门户网站排名?
如何快速查询网站的真实建站时间?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
*请认真填写需求信息,我们会在24小时内与您取得联系。