• 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
    ";
        $head = "GET ".$info['path']."?".$query_str." HTTP/1.0
    ";
        $head .= "Host: ".$info['host']."
    ";
        $head .= "
    ";
        $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
    ";
        $head .= "Host: ".$info['host']."
    ";
        $head .= "Referer: http://".$info['host'].$info['path']."
    ";
        $head .= "Content-type: application/x-www-form-urlencoded
    ";
        $head .= "Content-Length: ".strlen(trim($query))."
    ";
        $head .= "
    ";
        $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>';
  • 相关阅读:
    DFT
    BSDL
    穆尼里奥:未派上最好点球手;齐达内成功并不意外
    module使用和设置
    APU (美国AMD公司研发的加速处理器)
    Lucio: We avoided Mourinho after every loss
    高位压迫——萨基给世界足坛带来的技术革命
    穆里尼奥:曼联没有在今夏尝试过签下C罗
    Linux 的 Out-of-Memory (OOM) Killer
    shell source命令说明
  • 原文地址:https://www.cnblogs.com/zakun/p/5981119.html
Copyright © 2020-2023  润新知