php 利用fsockopen GET/POST 提交表单及上传文件
来源:互联网 发布:高性能mysql 知乎 编辑:程序博客网 时间:2024/06/05 19:40
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;
- ?>
- <?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;
- ?>
- <?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;
- ?>
- <?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参数$host = 'www.aaa.com'; //域名$port = 80; //端口$errno = ''; //错误信息$errstr = '';//错误信息已字符串形式返回$timeout = 30; //请求时间$url = '/getapi.php'; //请求地址//参数$param = array( 'name' => '123', 'sex' => 'man');//请求地址 $key=$val & $key= $val$url = $url.'?'.http_build_query($param);// 建立链接$fp = fsockopen($host, $port, $errno, $errstr, $timeout);//是否正确建立链接if(!$fp){ return false;}// 发送请求$out = "GET $url HTTP/1.1\r\n";$out .= "Host: $host\r\n";$out .= "Connection:close\r\n\r\n";fwrite($fp, $out);//响应信息$response = '';while($row=fread($fp, 1024)){ $response .= $row;}//echo $response[241];die;//echo strlen($response);die;//关闭链接fclose($fp);$pos = strpos($response, "\r\n\r\n");$response = substr($response, $pos+6,-6);echo $response ;
响应
<?php$name = $_GET['name'];$sex = $_GET['sex'];echo 'name='.$name.'<br>';echo 'sex='.$sex;
PHP利用fsockopen POST HTTP请求(URL)并获取返回值
- <?php
- $srv_ip = '192.168.1.5';//你的目标服务地址.
- $srv_port = 80;//端口
- $url = 'http://localhost/fsock.php'; //接收你post的URL具体地址
- $fp = '';
- $errno = 0;//错误处理
- $errstr = '';//错误处理
- $timeout = 10;//多久没有连上就中断
- $post_str = "username=demo&password=hahaha";//要提交的内容.
- //打开网络的 Socket 链接。
- $fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);
- if (!$fp){
- echo('fp fail');
- }
- $content_length = strlen($post_str);
- $post_header = "POST $url HTTP/1.1\r\n";
- $post_header .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $post_header .= "User-Agent: MSIE\r\n";
- $post_header .= "Host: ".$srv_ip."\r\n";
- $post_header .= "Content-Length: ".$content_length."\r\n";
- $post_header .= "Connection: close\r\n\r\n";
- $post_header .= $post_str."\r\n\r\n";
- fwrite($fp,$post_header);
- $inheader = 1;
- while(!feof($fp)){//测试文件指针是否到了文件结束的位置
- $line = fgets($fp,1024);
- //去掉请求包的头信息
- if ($inheader && ($line == "\n" || $line == "\r\n")) {
- $inheader = 0;
- }
- if ($inheader == 0) {
- echo $line;
- }
- }
- fclose($fp);
- unset ($line);
- ?>
简要说明:代码第二行是你的IP地址或域名,第四行是你要POST的页面的具体地址,本例用的是fsock.PHP,fsock.php内容如下:
- <?php
- echo "username:".$_POST['username']."<br/>";
- echo "password:".$_POST['password'];
- ?>
结果为:
username:demo
password:hahaha
0 0
- php 利用fsockopen GET/POST 提交表单及上传文件
- php 利用fsockopen GET/POST 提交表单及上传文件
- PHP 利用 fsockopen GET/POST 提交表单及上传文件
- php利用fsockopen 模拟post 提交
- php上传文件--表单提交
- php fsockopen 伪造 post和get方法
- php 通过fsockopen 模拟POST提交
- PHP之fsockopen提交POST数据讲解
- php curl fsockopen 上传文件
- Python3中利用Urllib进行表单数据提交(Get,Post)
- Python3中利用Urllib进行表单数据提交(Get,Post)
- Python3中利用Urllib进行表单数据提交(Get,Post)
- post 提交 和 get 提交的区别 文件上传
- CURL模拟表单post提交及相关常用参数的使用(包括提交表单同时上传文件)
- CURL模拟表单post提交及相关常用参数的使用(包括提交表单同时上传文件)
- php post get提交
- PHP CURL模拟表单post提交文件,curl POST文件
- PHP 版HTTP GET,POST,上传文件
- 单例设计模式
- 牛顿法与拟牛顿法学习笔记(三)DFP 算法
- html开源flash视频播放器代码下载
- 正则表达式验证IP和端口格式的正确性
- mysql replace into用法详细说明
- php 利用fsockopen GET/POST 提交表单及上传文件
- Centos 7 学习之添加用户
- 嵌入式linux基础教程第二版 第二章续
- 组合数学(象棋中的皇后,uva 11538)
- ios常见面试题之基础
- 洛谷1156 垃圾陷阱 dp
- p图代码
- 牛顿法与拟牛顿法学习笔记(四)BFGS 算法
- MySql replace into ,merge into ,ON DUPLICATEKEY UPDATE 语法