PHP fsockopen模拟POST/GET方法
原文链接:http://www.nowamagic.net/academy/detail/12220214
fsockopen 除了前面小节的模拟生成 HTTP 连接之外,还能实现很多功能,比如模拟 post 和 get 传送数据的方法。比如下面的例子:
//fsocket模拟post提交
$url = "http://localhost/test2.php?site=nowamagic.net";
print_r(parse_url($url)); //echo $query;
sock_get($url,"user=gonn");
//sock_get($url, $query); //fsocket模拟get提交
function sock_get($url, $query)
{
$data = array(
'foo'=>'bar',
'baz'=>'boom',
'site'=>'www.nowamagic.net',
'name'=>'nowa magic'); $query_str = http_build_query($data); $info = parse_url($url);
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);
//$head = "GET ".$info['path']."?".$info["query"]." HTTP/1.0\r\n";
$head = "GET ".$info['path']."?".$query_str." HTTP/1.0\r\n";
$head .= "Host: ".$info['host']."\r\n";
$head .= "\r\n";
$write = fputs($fp, $head);
while (!feof($fp))
{
$line = fread($fp,4096);
echo $line;
}
} sock_post($url,"user=gonn"); function sock_post($url, $query)
{
$info = parse_url($url);
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);
$head = "POST ".$info['path']."?".$info["query"]." HTTP/1.0\r\n";
$head .= "Host: ".$info['host']."\r\n";
$head .= "Referer: http://".$info['host'].$info['path']."\r\n";
$head .= "Content-type: application/x-www-form-urlencoded\r\n";
$head .= "Content-Length: ".strlen(trim($query))."\r\n";
$head .= "\r\n";
$head .= trim($query);
$write = fputs($fp, $head);
while (!feof($fp))
{
$line = fread($fp,4096);
echo $line;
}
}
接收页面 test2.php 的代码为:
$data = $_REQUEST; echo '<pre>';
print_r( $data );
echo '</pre>';
PHP fsockopen模拟POST/GET方法的更多相关文章
- [Oracle]快速生成大量模拟数据的方法
快速生成大量模拟数据的方法: create table TEST(id integer, TEST_NUMBER NUMBER(18,6)); insert into TEST select i+j, ...
- PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息
了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器.Windows内置命令Telnet可以帮助我们发送简单的HTTP请求. 并且TELNET是一个特别灵活的工具 ...
- Python模拟HttpRequest的方法总结
Python可以说是爬网的利器,本文主要介绍了一些python来模拟http请求的一些方法和技巧. Python处理请求的类库有两个,urllib,urllib2. 这两个类库并不是一个类库的两个不同 ...
- java基础知识回顾之---java String final类普通方法的应用之“模拟字符串Trim方法”
/* * 4,模拟一个trim功能一致的方法.去除字符串两端的空白 * 思路: * 1,定义两个变量. * 一个变量作为从头开始判断字符串空格的角标.不断++. * 一个变量作为从尾开始判断字符串空 ...
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
网上的很多模拟登录程序,大都是通过服务程序apache之类的运行,获取到验证码之后显示在网页上,然后填上再POST出去,这样虽然看起来很友 好,但是既然模拟登录,登录后所干的事情就不一定是短时间完成的 ...
- C#_HttpWebRequest保存cookies模拟登录的方法
CookieContainer cookies = new CookieContainer(); string url = "http://www.google.com.hk/"; ...
- c#模拟js escape方法
public static string Escape(string s) { StringBuilder sb = new StringBuilder(); byte[] ba = System.T ...
- 模拟post请求方法
2
- c#模拟js escape方法(转)
实现URI字符串转化成escape格式的字符 public static string Escape(string s) { StringBuilder sb ...
随机推荐
- 为docker创建ubuntu带SSH的基础镜像
安装Debootstrap ubuntu操作系统:apt install debootstrap centos操作系统:yum install debootstrap 构建基础Ubuntu的rootf ...
- 关于在SSH2中使用ajax技术的总结(主要写Struts2和ajax)
以下内容是自己理解的,因为还没有看过相关的文章,所以,技术上还是有很大的欠缺.不过这也是自己努力思考得到的,如果有什么更好的建议可以回复我. 1. 任务需求: 实现一个包含数据的表格,并且有分页功能. ...
- 在linux下玩转usb摄像头
硬件平台:PC机一台 .usb摄像头 操作系统:Linux3.0.8 交叉编译环境:arm-none-Linux-gnueabi-gcc 4.5.1 调试步骤: 一.linux 内核解压 1.1使用 ...
- pclint在VS2013中的配置
1.安装pclint a. 从http://download.csdn.net/detail/finewind/8426979下载破解版的pclint9i版: b. 点击pclint9setuo.ex ...
- cocos2d-x 2.2.0 图片选中聚焦 ,图片描边 CCClippingNode 实现
效果例如以下图 左边箭头是x方向翻转的.右边箭头有旋转和缩放action. 大概实现方法:用箭头作为遮罩层,底图是一个绘制的矩形,得到一个黄色箭头背景.在用schedule尾随要聚焦箭头动作.这个 ...
- CentOS7关闭SELinux
查看 [root@dev-server ~]# getenforce Disabled [root@dev-server ~]# /usr/sbin/sestatus -v SELinux statu ...
- vs2010 编译多个project问题
使用VS2010 编译从vc6.0复制过来的原project文件源代码.提示错误非常多.感觉无从下手.非常多原始的函数和API參数都提示类型 错误或者不兼容. 百度一下.第一个问题: vc6.0使用A ...
- 从git下载一个工程
1.右键点工程区,选“Import...” 2.Import source 选Git->“Projects from Git” 3.三个选择项中选最后一项CloneURI 4.弹出对话框,URI ...
- python中MySQLdb模块用法实例
篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中 ...
- How to Configure an SSIS Package to Access a Web Service using WCF
This information is from:http://blogs.msdn.com/b/dbrowne/archive/2010/07/08/how-to-configure-an-ssis ...