php 模拟POST提交的2种方法详解


Posted in PHP onJune 17, 2013

一、通过curl函数

$post_data = array();
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "submit";
$url='http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$o="";
foreach ($post_data as $k=>$v)
{
    $o.= "$k=".urlencode($v)."&";
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
//为了支持cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);

二、通过fsockopen
$URL=‘http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "ログイン";
$referrer="";
// parsing the given URL
$URL_Info=parse_url($URL);
// Building referrer
if($referrer=="") // if not given use this script as referrer
$referrer=<PRE class=php name="code">{1}</PRE><BR>
SERVER["SCRIPT_URI"]; // making string from $dataforeach($post_data as $key=>$value)$values[]="$key=".urlencode($value); $data_string=implode("&",$values);// Find out which port is needed - if not given use standard (=80)if(!isset($URL_Info["port"]))$URL_Info["port"]=80;//
 building POST-request:$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";$request.="Host: ".$URL_Info["host"]."\n";$request.="Referer: $referrer\n";$request.="Content-type: application/x-www-form-urlencoded\n";$request.="Content-length: ".strlen($data_string)."\n";$request.="Connection:
 close\n";$request.="\n";$request.=$data_string."\n";$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);fputs($fp, $request);while(!feof($fp)) { $result .= fgets($fp, 128);}fclose($fp);
<PRE></PRE>
<P><BR>
 </P>
<P>Snoopy 类(2)<BR>
sourceforge.net/projects/snoopy/</P>
<P>http://www.redalt.com/xref/trunk/nav.htm?wp-includes/class-snoopy.php.htm</P>
<P>HTTP类(1,2)</P>
<P>http://www.phpclasses.org/browse/download/1/file/5/name/http.php</P>
<P>PEAR HTTP_Request</P>
<P>http://pear.php.net/package/HTTP_Request</P>
<P class=akpc_pop>Popularity: 70%</P>
<P> </P>
PHP 相关文章推荐
用PHP制作静态网站的模板框架(一)
Oct 09 PHP
php下防止单引号,双引号在接受页面转义的设置方法
Sep 25 PHP
php file_exists 检查文件或目录是否存在的函数
May 10 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 PHP
php合并数组中相同元素的方法
Nov 13 PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 #PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 #PHP
深入PHP curl参数的详解
Jun 17 #PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 #PHP
PHP中array_merge和array相加的区别分析
Jun 17 #PHP
php之Memcache学习笔记
Jun 17 #PHP
解析ajax事件的调用顺序
Jun 17 #PHP
You might like
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
朴素贝叶斯算法的python实现方法
2014/11/18 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Django框架模板的使用方法示例
2019/05/25 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
美国第一香水网站:Perfume.com
2017/01/23 全球购物
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
个人求职简历的自我评价
2013/10/19 职场文书
小学毕业家长寄语
2014/01/19 职场文书
网站美工岗位职责
2014/04/02 职场文书
好学生评语大全
2014/05/05 职场文书
党支部对照检查材料
2014/08/25 职场文书
2014年路政工作总结
2014/12/10 职场文书
网络销售员岗位职责
2015/04/11 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技