我的第一个PHP程序(by quqi99)

                                           我的第一个PHP程序(by quqi99)



作者:张华 发表于:2011-12-21

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

 

 

        做了个活,用java写好了接口,需要从php调一下,php转发吧,带cookie过去,转发返回的cookie,不要能转发附件。从来没搞过php啊,怎么办呢,现学现卖,折腾了半天,搞出这么个玩意,如下:

 

            $header = array();
            $cookies = null;;
            array_push($header, "X-Forwarded-For: " . $_SERVER['REMOTE_ADDR']);
            array_push($header, "X-Forwarded-Host: " . $_SERVER['HTTP_HOST']);
            array_push($header, "X-Forwarded-Server: " . $_SERVER['SERVER_ADDR']);
            foreach ( getallheaders() as $key => $value ) {
                if ($key == "Cookie"){
                    array_push ($header, $key . ": " . $value);
                    $cookies = $value;
                } 
            }

            $postvars = array();
            if (isset($_POST)) {
                foreach ($_POST as $var => $val) {
                    $postvars[$var] = $val;
                }
            }
            if (isset($_FILES)) {
                foreach ($_FILES as $var => $val) {
                  if(file_exists($val['tmp_name'])){
                     $postvars[$var] = "@" . $val['tmp_name'];
                     $postvars['filename' . "[$var]"] = $val['name'];
                  }
                }
            }
            $content = $this->curl($remoteUrl, '', '', $postvars, $header);

 

 

 function curl ($url, $user, $pw, $postvars, $header, $isPost='1') {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        if ($isPost == '1') {
            curl_setopt($ch, CURLOPT_POST, 1);
        } else {
            curl_setopt($ch, CURLOPT_POST, 0);
        }
        if ($postvars) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 4);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_HEADER, TRUE);
        if ($header) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }
        if ($user && $pw) {
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_USERPWD, "$user:$pw");
        }
        $http = curl_exec($ch);
        if (curl_errno($ch)) {
            //        echo "Error: " . curl_error ( $ch );
        }
        curl_close($ch);
        $response = preg_split("//r/n/r/n/", $http, 3);
        if (strripos($response[0], "100 Continue")) {
            $headers = preg_split("//r/n/", $response[1]);
            $content = $response[2];
        } else {
            $headers = preg_split("//r/n/", $response[0]);
            $content = $response[1];
        }
        for ($i = 0; $i < count($headers); $i ++) {
            $header = explode(":", $headers[$i]);
            switch ($header[0]) {
                case "Transfer-Encoding":
                    # skip these header , the apache will reset it
                    continue;
                case "Set-Cookie":
                    header($headers[$i], FALSE);
                    break;
                default:
                    break;
            }
        }
        return $content;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quqi99

你的鼓励就是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值