原文链接: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方法的更多相关文章

  1. [Oracle]快速生成大量模拟数据的方法

    快速生成大量模拟数据的方法: create table TEST(id integer, TEST_NUMBER NUMBER(18,6)); insert into TEST select i+j, ...

  2. PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息

    了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器.Windows内置命令Telnet可以帮助我们发送简单的HTTP请求. 并且TELNET是一个特别灵活的工具 ...

  3. Python模拟HttpRequest的方法总结

    Python可以说是爬网的利器,本文主要介绍了一些python来模拟http请求的一些方法和技巧. Python处理请求的类库有两个,urllib,urllib2. 这两个类库并不是一个类库的两个不同 ...

  4. java基础知识回顾之---java String final类普通方法的应用之“模拟字符串Trim方法”

    /* * 4,模拟一个trim功能一致的方法.去除字符串两端的空白  * 思路: * 1,定义两个变量. * 一个变量作为从头开始判断字符串空格的角标.不断++. * 一个变量作为从尾开始判断字符串空 ...

  5. PHP使用CURL实现对带有验证码的网站进行模拟登录的方法

    网上的很多模拟登录程序,大都是通过服务程序apache之类的运行,获取到验证码之后显示在网页上,然后填上再POST出去,这样虽然看起来很友 好,但是既然模拟登录,登录后所干的事情就不一定是短时间完成的 ...

  6. C#_HttpWebRequest保存cookies模拟登录的方法

    CookieContainer cookies = new CookieContainer(); string url = "http://www.google.com.hk/"; ...

  7. c#模拟js escape方法

    public static string Escape(string s) { StringBuilder sb = new StringBuilder(); byte[] ba = System.T ...

  8. 模拟post请求方法

    2

  9. c#模拟js escape方法(转)

    实现URI字符串转化成escape格式的字符 public static string Escape(string s)         {             StringBuilder sb ...

随机推荐

  1. Nginx为什么比Apache Httpd高效

    转载于:http://www.toxingwang.com/linux-unix/linux-basic/1712.html 一.进程.线程? 在回答nginx 为什么比apache更高效之前,必须要 ...

  2. Microsoft-PetSop4.0(宠物商店)-数据库设计-Oracle

    ylbtech-DatabaseDesgin:Microsoft-PetSop4.0(宠物商店)-数据库设计-Oracle DatabaseName:PetShop(宠物商店) Model:宠物商店网 ...

  3. Java算法题:求素数

    题目:判断101-200之间有多少个素数,并输出所有素数. 思路:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 具体代码: public Ve ...

  4. [分享]在ubuntu9.10下实现开机自动登录并运行自己的图形程序

    在ubuntu9.10下实现开机自动登录并运行自己的图形界面程序(本人接触ubuntu时日不长,文中一些说法难免有错误和疏漏之处,还请大家不吝批评指正.)实现步骤分以下三大步:1. 实现ubuntu文 ...

  5. ES里关于对象的拓展

    一.对象类别 在浏览器这样的执行环境中,对象没有统一的标准,在标准中又使用不同的术语描述对象,ES6规范清晰定义了每一个类别的对象,对象的类别如下 1.普通(Ordinary)对象:具有JS对象所有的 ...

  6. 【AS3 Coder】任务五:Flash 2D游戏的第二春(中)

    在上一节中,我们介绍了如何构建我们小小的90度角RPG游戏的背景,在这一节中我将为列位带来重头戏部分,隆重介绍我们的主角及NPC登场,噔噔噔噔……掌声在哪里?! 额,没听到掌声,罢了,直接开场吧. 本 ...

  7. tez参数

    https://tez.apache.org/releases/0.8.4/tez-api-javadocs/configs/TezConfiguration.html

  8. hive 行转列,列转行

    行转列: concat_ws 列转行: explode

  9. git学习——查看提交历史

    git log可以查看提交历史: 用-p选项展开显示每次提交的内容差异,用-2则仅显示最近两次的更新:git log -p -2 在-p选项后面使用--word-diff选项进行单词层面的对比.这其中 ...

  10. setTimeout应用 && 自动播放——幻灯片效果&& 自动改变方向——幻灯片效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...