php利用fsockopen GET/POST提交表单及上传文件


Posted in PHP onMay 22, 2017

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 相关文章推荐
PHP 中英文混合排版中处理字符串常用的函数
Apr 12 PHP
php SQL之where语句生成器
Mar 24 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
JSON在PHP中的应用介绍
Sep 08 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
php判断电子邮件是否正确方法
Dec 04 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 #PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 #PHP
Yii2框架中日志的使用方法分析
May 22 #PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 #PHP
php readfile下载大文件失败的解决方法
May 22 #PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 #PHP
PHP中trait使用方法详细介绍
May 21 #PHP
You might like
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
php实现监听事件
2013/11/06 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
jquery 查找新建元素代码
2010/07/06 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
python 正则表达式 概述及常用字符
2009/05/04 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
500行python代码实现飞机大战
2020/04/24 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
教师职称自我鉴定
2014/02/12 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
个人授权委托书模板
2014/09/14 职场文书
欢迎新生标语
2014/10/06 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
安全生产先进个人总结
2015/02/15 职场文书
运动员加油词
2015/07/18 职场文书