阿新

php的一个简单的curl方法
/** * curl请求 * @param $url * @param null $...
扫描右侧二维码阅读全文
22
2018/06

php的一个简单的curl方法

/**
     * curl请求
     * @param $url
     * @param null $data 发送数据
     * @param string $method 请求方法
     * @param array $headers 请求头
     * @param null $cookies 携带cookie
     * @param array $options 其他标准curl选项
     * @param null $info 请求信息
     * @return mixed|null
     */
    function iCurl($url, $data = null, $method = 'get', array $headers = array(), $cookies = null, array $options = array(), &$info = null){
        $method = strtoupper($method);
        if($data){
            if($method == 'GET'){
                $data = is_array($data) ? http_build_query($data) : $data;
                $url = strpos($url, '?') !== false ? $url . '&' . $data : $url . '?' . $data;
                $curl = curl_init($url);
            }else{
                $curl = curl_init($url);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            }
        }else{
            $curl = curl_init($url);
        }
        //设置选项
        curl_setopt_array($curl, array(
            CURLOPT_TIMEOUT => 30, //超时时间
            CURLOPT_CUSTOMREQUEST => $method, // 请求方法
            CURLOPT_RETURNTRANSFER => true, // 返回内容
            CURLOPT_HEADER => false, // 返回header
            CURLOPT_SSL_VERIFYPEER => false, // 不校验证书
        ));
        
        if(ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')){//不判断这个有的平台会报错
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//自动重定向
        }

        //设置头信息
        if(!empty($headers)){
            $_headers = [];
            foreach($headers as $name => $value){ //处理成CURL可以识别的headers格式
                $_headers[] = $name . ':' . $value;
            }
            curl_setopt($curl, CURLOPT_HTTPHEADER, $_headers);
        }
        //设置cookie
        if(!empty($cookies)){
            $_cookies = '';
            if(is_array($cookies)){
                foreach($cookies as $name => $value){
                    $_cookies .= "{$name}={$value}; ";
                }
            }else{
                $_cookies = $cookies;
            }
            curl_setopt($curl, CURLOPT_COOKIE, $_cookies);
        }
        //其他特殊选项
        if(!empty($options)){
            curl_setopt_array($curl, $options);
        }
        //执行请求
        $output = curl_exec($curl);
        $info = curl_getinfo($curl);
        $error = curl_error($curl);
        curl_close($curl);
        if ($info['http_code'] == 200) {
            return $output;
        }
        //错误信息和输出信息都带出去
        $info['error'] = $error;
        $info['output'] = $output;
        return null;
    }
Last modification:August 29th, 2018 at 09:48 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment