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
相关文章:
C#如何在一个XML文件中查找并替换文本内容
如何在企业微信快速生成手机电脑官网?
如何在局域网内绑定自建网站域名?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
建站之星logo尺寸如何设置最合适?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
如何在阿里云通过域名搭建网站?
建站OpenVZ教程与优化策略:配置指南与性能提升
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
如何通过NAT技术实现内网高效建站?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
香港网站服务器数量如何影响SEO优化效果?
高端云建站费用究竟需要多少预算?
C++如何使用std::optional?(处理可选值)
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
高端网站建设与定制开发一站式解决方案 中企动力
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
股票网站制作软件,网上股票怎么开户?
如何在万网主机上快速搭建网站?
如何高效生成建站之星成品网站源码?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
建站之星后台管理如何实现高效配置?
独立制作一个网站多少钱,建立网站需要花多少钱?
python的本地网站制作,如何创建本地站点?
公司网站设计制作厂家,怎么创建自己的一个网站?
代刷网站制作软件,别人代刷火车票靠谱吗?
C++时间戳转换成日期时间的步骤和示例代码
jQuery 常见小例汇总
如何用VPS主机快速搭建个人网站?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
建站之星安装失败:服务器环境不兼容?
如何用5美元大硬盘VPS安全高效搭建个人网站?
详解jQuery停止动画——stop()方法的使用
网站制作说明怎么写,简述网页设计的流程并说明原因?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
高端建站三要素:定制模板、企业官网与响应式设计优化
建站之星安装后如何自定义网站颜色与字体?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
建站之星安装提示数据库无法连接如何解决?
如何通过wdcp面板快速创建网站?
如何在景安服务器上快速搭建个人网站?
贸易公司网站制作流程,出口贸易网站设计怎么做?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何在宝塔面板中创建新站点?
建站之星如何快速更换网站模板?
广东企业建站网站优化与SEO营销核心策略指南
北京制作网站的公司,北京铁路集团官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。