• 技术文章 >php教程 >PHP源码

    php模拟用户发送post数据方法

    2016-06-08 17:24:51原创608
    我们经常会听人说利用php模拟用户发送post数据,今天出于好奇我找了两个用不同方法来实例post数据的方法,有需要了解的朋友可以看看.

    使用 PHP 向页面 POST 数据

    代码如下 复制代码
    function socketPost($url, $data, &$ret)
    {
    $urlArr = parse_url($url);
    $host = $urlArr['host'];
    $port = isset($urlArr['port'])?$urlArr['port']:80;
    $path = isset($urlArr['path'])?$urlArr['path']:"//m.sbmmt.com/m/";
    $fp = fsockopen($host, $port, $errno, $errstr, 30);
    if (!$fp)
    {
    echo "$errstr ($errno)
    n";
    return false;
    }
    else
    {
    $out = "POST $path HTTP/1.1rn";
    $out .= "Host: $hostrn";
    $out .= "Content-Type: application/x-www-form-urlencodedrn";
    $out .= "Content-Length: ".strlen($data)."rn";
    $out .= "Connection: Keep-Alivernrn";
    $out .= $data;
    $ret = "";
    fwrite($fp, $out);
    while (!feof($fp))
    {
    $ret .= fgets($fp, 128);
    }
    fclose($fp);
    }
    return true;
    }
    ?>

    如果post报错,把$out .= "Connection: Keep-Alivernrn";中的Keep-Alive改成Close

    利用php的socket模拟发送post数据的一个实例

    代码如下 复制代码
    $domain = "127.0.0.1";
    $port = 80;
    $uri = "/ly/post.php";
    $data="txtName=111&txtEmail=222@1.net&rabSex=%D0%A1%BD%E3&txtFrom=%BD%AD%CE%F7%C1%FA%C4%CF&txtQq=2222&txtUrl=33333333&txtFace=images%2Fface%2Fface05.gif&txtEm=images%2Fem%2Fem01.gif&txtBody=rrr";
    $protocolstr ="POST {$uri} HTTP/1.1rnHost: {$domain}rnContent-type: application/x-www-form-urlencodedrnContent-length: " . strlen($data) . "rnReferer: http://10.10.10.10/ly/index.phprnUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)rnAccept: */*rnrn{$data}rnrn";


    $sock = fsockopen($domain, $port, $errno, $errstr, 30);
    if (!$sock) die("$errstr ($errno)n");
    fputs($sock, $protocolstr);

    $headers = "";
    while ($str = trim(fgets($sock, 4096)))
    $headers .= "$strn";

    $body = "";
    while (!feof($sock))
    $body .= fgets($sock, 4096);
    fclose($sock);

    echo "

    Response header:

    n";
    echo $headers;
    echo "n";

    echo "

    Response body:

    n";
    echo $body;
    ?>

    在这里我们就不讲关于fsockopen fwrite这些函数的用法了,只讲述模仿过程,有需要的可参考了下。

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:nbsp quot post urlArr amp
    上一篇:php计划任务的实现方法,支持windows/linux下运行 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP实现301跳转,及延时跳转代码• PHP中上传多个文件到服务器实例• php 列出目录与删除目录实例代码• php 模拟用户抓取网页内容程序• PHP定义验证码图形大小函数
    1/1

    PHP中文网