{"rsdb":{"rid":"395877","subhead":"","postdate":"0","aid":"272866","fid":"85","uid":"1","topic":"1","content":"
\n

\u7528PHP\u5c01\u88c5\u4e00\u4e2a\u5f3a\u5927\u4e14\u901a\u7528\u7684cURL\u65b9\u6cd5\u3002
\u7528PHP\u5c01\u88c5\u4e00\u4e2a\u5f3a\u5927\u4e14\u901a\u7528\u7684cURL\u65b9\u6cd5\u3002
\u7528PHP\u5c01\u88c5\u4e00\u4e2a\u5f3a\u5927\u4e14\u901a\u7528\u7684cURL\u65b9\u6cd5\u3002
\u7528PHP\u5c01\u88c5\u4e00\u4e2a\u5f3a\u5927\u4e14\u901a\u7528\u7684cURL\u65b9\u6cd5\u3002<\/p> \n

\/**\n * @function \u5f3a\u5927\u4e14\u901a\u7528\u7684cURL\u8bf7\u6c42\u5e93\n * @param    $url            string        \u8def\u5f84       \u5982\uff1ahttps:\/\/example.com\/a\/b?key=val&k=>v\n * @param    $method         string        \u8bf7\u6c42\u65b9\u5f0f   \u5982\uff1aget\u3001post\u3001put\u3001delete\u3001patch\u3001options\n * @param    $payload        array|string  \u8377\u8f7d       \u5982\uff1a['foo' => 'bar', 'upload_file' => new CURLFile(file_path)]\u6216json{"foo":"bar"}\n * @param    $request_header array         \u8bf7\u6c42\u5934     \u5982\uff1a['Content-Type' => 'json', 'Set-Cookie' => 'foo']\n * @param    $time_out       int           \u8d85\u65f6\u79d2\u6570   \u5982\uff1a10\uff0c\uff08\u5355\u4f4d\uff1a\u79d2\uff09\n * @return   array [bool \u8bf7\u6c42\u662f\u5426\u6210\u529f, string \u9519\u8bef\u5185\u5bb9, [int http\u72b6\u6001\u7801, array \u54cd\u5e94\u5934, string \u54cd\u5e94\u4e3b\u4f53\u5185\u5bb9]];\n *\/\nfunction curl($url, $method = 'GET', $payload = [], $request_header = [], $time_out = 10) {\n    $curl = curl_init();\n    curl_setopt($curl,CURLOPT_URL, $url);\n\n    $method = strtoupper($method);\n    if ($method == 'POST') {\n        curl_setopt($curl, CURLOPT_POST, true);\n        curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);\n    } else if ($method == 'PUT') {\n        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');\n        curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);\n    } else if ($method == 'DELETE') {\n        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');\n        curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);\n    } else if ($method == 'PATCH') {\n        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PATCH');\n        curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);\n    } else if ($method == 'OPTIONS') {\n        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'OPTIONS');\n        curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);\n    } else if($method == 'HEAD') {\n        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'HEAD');\n    } else {\n        curl_setopt($curl, CURLOPT_HTTPGET, true);\n    }\n\n    if ((parse_url($url)['scheme'] ?? '') == 'https') {\n        \/\/\u9632\u6b62\u5bf912306\u7c7b\u4f3c\u7684\u4f7f\u7528\u81ea\u5bb6\u7684ssl\u8bc1\u4e66\uff0c\u9020\u6210\u7684\u8bf7\u6c42\u5931\u8d25\n        \/\/\u7981\u6b62\u9a8c\u8bc1\u5bf9\u7b49\u8bc1\u4e66\n        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);\n        \/\/\u7981\u6b62\u9a8c\u8bc1\u4e3b\u673a\u8bc1\u4e66\n        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);\n    }\n\n    if ($time_out) {\n        curl_setopt($curl, CURLOPT_TIMEOUT, $time_out);\n        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $time_out);\n    }\n\n    if ($request_header) {\n        \/\/\u8ffd\u52a0\u8bf7\u6c42\u5934 \u914d\u7f6ecurl\u5185\u5bb9\n        curl_setopt($curl, CURLOPT_HTTPHEADER, array_map(function ($key, $value) {return $key . ': ' . $value;}, array_keys($request_header), $request_header));\n    }\n\n    curl_setopt($curl, CURLOPT_HEADER, true);\n    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);\n    curl_setopt($curl, CURLINFO_HEADER_OUT, true);\n    curl_setopt($curl, CURLOPT_VERBOSE, true);\n    $response    = curl_exec($curl);\n    $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);\n    $http_code   = curl_getinfo($curl, CURLINFO_HTTP_CODE);\n    $body        = substr($response, $header_size);\n    $header_str  = trim(substr($response, 0, $header_size));\n    $header = [];\n\n    if($header_str) {\n        $header_arr  = explode("\\r\\n", $header_str);\n        foreach($header_arr as $every_header) {\n            $header_temp = explode(': ', $every_header, 2);\n            if(count($header_temp) == 2) {\n                $header[$header_temp[0]] = $header_temp[1];\n            }\n        }\n    }\n\n    if (curl_errno($curl)) {\n        return ['status' => false, 'msg'  => curl_error($curl), 'data' => []];\n    }\n\n    curl_close($curl);\n\n    return ['status' => true, 'msg'  => '', 'data' => ['http_code' => $http_code, 'body' => $body, 'header' => $header]];\n}\n<\/code><\/pre> \n<\/div>","orderid":"0","title":"\u7528PHP\u5c01\u88c5\u4e00\u4e2a\u5f3a\u5927\u4e14\u901a\u7528\u7684cURL\u65b9\u6cd5","smalltitle":"","mid":"0","fname":"PHP","special_id":"0","bak_id":"0","info":"0","hits":"292","pages":"1","comments":"0","posttime":"2023-08-26 21:10:34","list":"1693055434","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"PHP<\/A> \u5c01\u88c5\u4e00<\/A> \u5f3a\u5927\u4e14<\/A> \u901a\u7528\u7684<\/A> cURL<\/A> \u65b9\u6cd5<\/A>","jumpurl":"","iframeurl":"","style":"","template":"a:3:{s:4:\"head\";s:0:\"\";s:4:\"foot\";s:0:\"\";s:8:\"bencandy\";s:0:\"\";}","target":"0","ip":"220.152.140.35","lastfid":"0","money":"0","buyuser":"","passwd":"","allowdown":"","allowview":"","editer":"","edittime":"0","begintime":"0","endtime":"0","description":"\u7528PHP\u5c01\u88c5\u4e00\u4e2a\u5f3a\u5927\u4e14\u901a\u7528\u7684cURL\u65b9\u6cd5","lastview":"1716081917","digg_num":"0","digg_time":"0","forbidcomment":"0","ifvote":"0","heart":"","htmlname":"","city_id":"0"},"page":"1"}