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 Stream_*系列函数
Aug 01 PHP
PHP抽象类 介绍
Jun 13 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
php foreach正序倒序输出示例代码
Jul 01 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
Yii框架日志操作图文与实例详解
Sep 09 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 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
PHP处理Oracle的CLOB实例
2014/11/03 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
Python中的迭代器漫谈
2015/02/03 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
django中related_name的用法说明
2020/05/20 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
电子商务专业实习生自我鉴定
2013/09/24 职场文书
学术会议欢迎词
2014/01/09 职场文书
节约用水标语
2014/06/11 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
投标承诺函格式
2015/01/21 职场文书
民事调解协议书
2016/03/21 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server