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 相关文章推荐
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
PHP 进程锁定问题分析研究
Nov 24 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
ThinkPHP框架里隐藏index.php
Apr 12 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
PHP下的浮点运算不准的解决方法
Oct 27 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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相关资料
2006/10/09 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Python解析nginx日志文件
2015/05/11 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
Python 在函数上添加包装器
2020/07/28 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
餐饮营销方案
2014/02/23 职场文书
对祖国的寄语大全
2014/04/11 职场文书
宣传标语大全
2014/07/01 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
党员个人整改措施
2014/10/24 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android