Skip to content

Commit 91abdd3

Browse files
authored
Update helpers.php
1 parent 2de0148 commit 91abdd3

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

src/helpers.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ function tap($value, $callback = null)
3232
* @param string $method 请求方式
3333
* @param array $params 请求参数
3434
* @param array $headers 请求头
35+
* @param array $config 请求配置
3536
*
3637
* @return bool|array
3738
*
@@ -40,7 +41,7 @@ function tap($value, $callback = null)
4041
* $resp=curl("http://httpbin.org/ip", 'get', []);
4142
* die($resp['data']['response']);
4243
*/
43-
function curl(string $url, string $method = "GET", array $params = [], array $headers = [])
44+
function curl(string $url, string $method = "GET", array $params = [], array $headers = [], array $config = [])
4445
{
4546
$method = strtoupper($method);
4647

@@ -52,15 +53,37 @@ function curl(string $url, string $method = "GET", array $params = [], array $he
5253
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
5354
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
5455
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
55-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
56+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 要求结果为字符串且输出到屏幕上
5657

58+
// 设置代理
59+
if (!empty($config['proxy']['host']) && !empty($config['proxy']['port'])) {
60+
curl_setopt($ch,CURLOPT_PROXY, $config['proxy']['host']);
61+
curl_setopt($ch,CURLOPT_PROXYPORT, $config['proxy']['port']);
62+
}
63+
64+
if(!empty($config['use_cert']) && $config['use_cert'] == true){
65+
//设置证书
66+
//使用证书:cert 与 key 分别属于两个 .pem 文件
67+
if (!empty($config['use_cert']['ssl_cert_path'] && !empty($config['use_cert']['ssl_key_path']) {
68+
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
69+
curl_setopt($ch,CURLOPT_SSLCERT, $config['use_cert']['ssl_cert_path']);
70+
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
71+
curl_setopt($ch,CURLOPT_SSLKEY, $config['use_cert']['ssl_key_path']);
72+
}
73+
}
74+
75+
// 设置header
5776
if (!empty($headers)) {
5877
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
5978
}
6079

6180
if (stripos($url, "https://") !== FALSE) {
81+
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
6282
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
6383
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
84+
} else {
85+
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, TRUE);
86+
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 2);//严格校验
6487
}
6588

6689
if ($method === 'POST') {

0 commit comments

Comments
 (0)