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 读取文件内容代码(txt,js等)
Dec 06 PHP
第四章 php数学运算
Dec 30 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
PHP中数组的三种排序方法分享
May 07 PHP
探讨PHP JSON中文乱码的解决方法详解
Jun 06 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
php关闭warning问题的解决方法
May 17 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
yii2简单使用less代替css示例
Mar 10 PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 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
给多个地址发邮件的类
2006/10/09 PHP
php&amp;java(三)
2006/10/09 PHP
表单复选框向PHP传输数据的代码
2007/11/13 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
情人节之礼 js项链效果
2012/02/13 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
JS中Location使用详解
2015/05/12 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
python3音乐播放器简单实现代码
2020/04/20 Python
python素数筛选法浅析
2018/03/19 Python
python web框架中实现原生分页
2019/09/08 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
爱心捐款倡议书
2014/04/14 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
财务总监岗位职责
2015/02/03 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
小组口号霸气押韵
2015/12/24 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
高质量“欢迎词”
2019/04/03 职场文书
Java Socket实现多人聊天系统
2021/07/15 Java/Android
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB