<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                PHP 支持 Daniel Stenberg 創建的 libcurl 庫,能夠連接通訊各種服務器、使用各種協議。libcurl 目前支持的協議有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同時支持 HTTPS 證書、HTTP POST、HTTP PUT、 FTP 上傳(也能通過 PHP 的 FTP 擴展完成)、HTTP 基于表單的上傳、代理、cookies、用戶名+密碼的認證 需要安裝[??libcurl](http://curl.haxx.se/)包才能使用 PHP 的 cURL 函數。PHP 需要使用 7.10.5 或更高版本的 libcurl。 * [預定義常量](https://www.php.net/manual/zh/curl.constants.php) * [范例](https://www.php.net/manual/zh/curl.examples.php) * [curl 基礎例子](https://www.php.net/manual/zh/curl.examples-basic.php) * [cURL 函數](https://www.php.net/manual/zh/ref.curl.php) * [curl\_init](https://www.php.net/manual/zh/function.curl-init.php)— 初始化 cURL 會話 * [curl\_setopt](https://www.php.net/manual/zh/function.curl-setopt.php)— 設置 cURL 傳輸選項 * [curl\_exec](https://www.php.net/manual/zh/function.curl-exec.php)— 執行 cURL 會話 * [curl\_file\_create](https://www.php.net/manual/zh/function.curl-file-create.php)— 創建一個 CURLFile 對象 * [curl\_close](https://www.php.net/manual/zh/function.curl-close.php)— 關閉 cURL 會話 * [curl\_copy\_handle](https://www.php.net/manual/zh/function.curl-copy-handle.php)— 復制一個cURL句柄和它的所有選項 * [curl\_errno](https://www.php.net/manual/zh/function.curl-errno.php)— 返回最后一次的錯誤代碼 * [curl\_error](https://www.php.net/manual/zh/function.curl-error.php)— 返回當前會話最后一次錯誤的字符串 * [curl\_escape](https://www.php.net/manual/zh/function.curl-escape.php)— 使用 URL 編碼給定的字符串 * [curl\_getinfo](https://www.php.net/manual/zh/function.curl-getinfo.php)— 獲取一個cURL連接資源句柄的信息 * [curl\_multi\_add\_handle](https://www.php.net/manual/zh/function.curl-multi-add-handle.php)— 向curl批處理會話中添加單獨的curl句柄 * [curl\_multi\_close](https://www.php.net/manual/zh/function.curl-multi-close.php)— 關閉一組cURL句柄 * [curl\_multi\_errno](https://www.php.net/manual/zh/function.curl-multi-errno.php)— 返回上一次 curl 批處理的錯誤碼 * [curl\_multi\_exec](https://www.php.net/manual/zh/function.curl-multi-exec.php)— 運行當前 cURL 句柄的子連接 * [curl\_multi\_getcontent](https://www.php.net/manual/zh/function.curl-multi-getcontent.php)— 如果設置了CURLOPT\_RETURNTRANSFER,則返回獲取的輸出的文本流 * [curl\_multi\_info\_read](https://www.php.net/manual/zh/function.curl-multi-info-read.php)— 獲取當前解析的cURL的相關傳輸信息 * [curl\_multi\_init](https://www.php.net/manual/zh/function.curl-multi-init.php)— 返回一個新cURL批處理句柄 * [curl\_multi\_remove\_handle](https://www.php.net/manual/zh/function.curl-multi-remove-handle.php)— 移除cURL批處理句柄資源中的某個句柄資源 * [curl\_multi\_select](https://www.php.net/manual/zh/function.curl-multi-select.php)— 等待所有cURL批處理中的活動連接 * [curl\_multi\_setopt](https://www.php.net/manual/zh/function.curl-multi-setopt.php)— 為 cURL 并行處理設置一個選項 * [curl\_multi\_strerror](https://www.php.net/manual/zh/function.curl-multi-strerror.php)— 返回字符串描述的錯誤代碼 * [curl\_pause](https://www.php.net/manual/zh/function.curl-pause.php)— 暫停和取消暫停一個連接。 * [curl\_reset](https://www.php.net/manual/zh/function.curl-reset.php)— 重置一個 libcurl 會話句柄的所有的選項 * [curl\_setopt\_array](https://www.php.net/manual/zh/function.curl-setopt-array.php)— 為 cURL 傳輸會話批量設置選項 * [curl\_share\_close](https://www.php.net/manual/zh/function.curl-share-close.php)— 關閉 cURL 共享句柄 * [curl\_share\_errno](https://www.php.net/manual/zh/function.curl-share-errno.php)— 返回共享 curl 句柄的最后一次錯誤號 * [curl\_share\_init](https://www.php.net/manual/zh/function.curl-share-init.php)— 初始化一個 cURL 共享句柄。 * [curl\_share\_setopt](https://www.php.net/manual/zh/function.curl-share-setopt.php)— 為 cURL 共享句柄設置選項。 * [curl\_share\_strerror](https://www.php.net/manual/zh/function.curl-share-strerror.php)— 返回錯誤號對應的錯誤消息 * [curl\_strerror](https://www.php.net/manual/zh/function.curl-strerror.php)— 返回錯誤代碼的字符串描述 * [curl\_unescape](https://www.php.net/manual/zh/function.curl-unescape.php)— 解碼給定的 URL 編碼的字符串 * [curl\_version](https://www.php.net/manual/zh/function.curl-version.php)— 獲取 cURL 版本信息 * [CURLFile](https://www.php.net/manual/zh/class.curlfile.php)— CURLFile 類 * [CURLFile::\_\_construct](https://www.php.net/manual/zh/curlfile.construct.php)— 創建 CURLFile 對象 * [CURLFile::getFilename](https://www.php.net/manual/zh/curlfile.getfilename.php)— 獲取被上傳文件的 文件名 * [CURLFile::getMimeType](https://www.php.net/manual/zh/curlfile.getmimetype.php)— 獲取被上傳文件的 MIME 類型 * [CURLFile::getPostFilename](https://www.php.net/manual/zh/curlfile.getpostfilename.php)— 獲取 POST 請求時使用的 文件名 * [CURLFile::setMimeType](https://www.php.net/manual/zh/curlfile.setmimetype.php)— 設置被上傳文件的 MIME 類型 * [CURLFile::setPostFilename](https://www.php.net/manual/zh/curlfile.setpostfilename.php)— 設置 POST 請求時使用的文件名 * [CURLFile::\_\_wakeup](https://www.php.net/manual/zh/curlfile.wakeup.php)— 反序列化句柄 ``` /** * 使用curl方式實現get或post請求 * @param $url 請求的url地址 * @param $data 發送的post數據 如果為空則為get方式請求 * return 請求后獲取到的數據 */ public function curlRequest($url, $data = '') { $ch = curl_init(); $params[CURLOPT_URL] = $url; //請求url地址 $params[CURLOPT_HEADER] = false; //是否返回響應頭信息 $params[CURLOPT_RETURNTRANSFER] = true; //是否將結果返回 $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向 $params[CURLOPT_TIMEOUT] = 30; //超時時間 if (!empty($data)) { $params[CURLOPT_POST] = true; $params[CURLOPT_POSTFIELDS] = $data; //發送post參數 } $params[CURLOPT_SSL_VERIFYPEER] = false;//請求https時設置,還有其他解決方案 $params[CURLOPT_SSL_VERIFYHOST] = false;//請求https時,其他方案查看其他博文 curl_setopt_array($ch, $params); //傳入curl參數 $content = curl_exec($ch); //執行 curl_close($ch); //關閉連接 return $content; } /** * url方式請求 get或者post方式請求 * * @param string $url 要請求的url地址 * @param array $data 要發送的數據 存在該參數就啟用post提交,否則為get請求 * @return mixed $output 返回請求的結果 */ function curl($url, $data = null){ // 1.創建一個新的CURL資源 $ch = curl_init(); // 2.設置URL相應的選項 curl_setopt($ch, CURLOPT_URL, $url); // 設置請求的URL地址 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 將curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出(0為直接輸出,然后返回bool值) //curl_setopt($ch, CURLOPT_HEADER, 0); // 啟用時會將頭文件的信息作為數據流輸出 curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 設置cURL允許執行的最長秒數 curl_setopt($ch, CURLOPT_POST, $data ? 1 : 0); // 存在data就啟用post發送 啟用時會發送一個常規的POST請求,類型為:application/x-www-form-urlencoded,就像表單提交的一樣。 if(!empty($data)){ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//發送post參數 } //忽略證書 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 3.抓去URL并將它傳遞給瀏覽器 $output = curl_exec($ch); // 4.關閉CURL資源,并且釋放系統資源 curl_close($ch); // 返回輸出 return $output; } ``` 對于某些服務器可能會遇到不兼容的情況,需要將數據拼裝成字符串進行發送,可以使用如下函數: ``` function getPost($url,$vars){ $ch = curl_init(); $params[CURLOPT_URL] = $url; //請求url地址 $params[CURLOPT_HEADER] = false; //是否返回響應頭信息 $params[CURLOPT_RETURNTRANSFER] = true; //是否將結果返回 $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向 $params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'; $postfields = ''; foreach ($vars as $key => $value){ $postfields .= urlencode($key) . '=' . urlencode($value) . '&'; } $params[CURLOPT_POST] = true; $params[CURLOPT_POSTFIELDS] = $postfields; //解決方案一 禁用證書驗證 $params[CURLOPT_SSL_VERIFYPEER] = false; $params[CURLOPT_SSL_VERIFYHOST] = false; curl_setopt_array($ch, $params); //傳入curl參數 return curl_exec($ch); //執行 } ``` post請求 ``` /** * POST 請求 * @param string $url * @param array $param * @param boolean $post_file 是否文件上傳 * @return string content */ function post($url,$param,$post_file=false){ $oCurl = curl_init(); if(stripos($url,"https://")!==FALSE){ curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 } if (PHP_VERSION_ID >= 50500 && class_exists('\CURLFile')) { $is_curlFile = true; } else { $is_curlFile = false; if (defined('CURLOPT_SAFE_UPLOAD')) { curl_setopt($oCurl, CURLOPT_SAFE_UPLOAD, false); } } if (is_string($param)) { $strPOST = $param; }elseif($post_file) { if($is_curlFile) { foreach ($param as $key => $val) { if (substr($val, 0, 1) == '@') { $param[$key] = new \CURLFile(realpath(substr($val,1))); } } } $strPOST = $param; } else { $aPOST = array(); foreach($param as $key=>$val){ $aPOST[] = $key."=".urlencode($val); } $strPOST = join("&", $aPOST); } curl_setopt($oCurl, CURLOPT_URL, $url); curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($oCurl, CURLOPT_POST,true); curl_setopt($oCurl, CURLOPT_POSTFIELDS,$strPOST); $sContent = curl_exec($oCurl); $aStatus = curl_getinfo($oCurl); curl_close($oCurl); if(intval($aStatus["http_code"])==200){ return $sContent; }else{ return false; } } ``` ## [**curl 文件上傳**](https://www.cnblogs.com/lichihua/p/10503222.html) **curl\_file\_create**?(帶路徑的文件名?\[, 文件`mimetype`?, 上傳數據里的文件名\] ) ; new**cURLFile**(帶路徑的文件名?\[, 文件的`mimetype`?, 上傳數據里的文件名\] ) ; ~~~ $ch = curl_init('http://example.com/upload.php'); // 創建CURLFile對象 $cfile = curl_file_create('/data/cats.jpg','image/jpeg','test_name'); //$cfile = new cURLFile('/data/cats.jpg','image/jpeg','test_name'); // 分配提交的數據 $data = array('test_file' => $cfile); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); ~~~ upload.php接受到的數據格式類似: ~~~ array(1) { ["test_file"]=> array(5) { ["name"]=> string(9) "test_name" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpPC9Kbx" ["error"]=> int(0) ["size"]=> int(46334) } } ~~~ 上傳多個文件 ~~~ $ch = curl_init(); // 上傳多個 $postFields = array( 'file[0]' => new cURLFile($file1, $mimetype1, $basename1), 'file[1]' => new cURLFile($file2, $mimetype2, $basename2) ) curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); ~~~ 將@前綴文件名轉為cURLFile ~~~ if(is_array($postfields) == true) { foreach($postfields as $key => $value) { // 以@開頭 if(strpos($value, '@') === 0) { // 得到去掉@的文件名 $filename = ltrim($value, '@'); //轉為CURLFile類 $postfields[$key] = new CURLFile($filename); } } } curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); ~~~ 例子 ~~~ //上傳地址 $target="http://youraddress.tld/example/upload.php"; //面向過程的方式創建CURLFile 對象 $cfile1 = curl_file_create('resource/test.png','image/png','testpic'); //面向對象 的方式創建CURLFile 對象 $cfile2 = new CURLFile('resource/test.png','image/png','testpic'); 分配post提交的數據 $imgdata =[ 'myimage1' => $cfile1, 'myimage2' => $cfile2 ]; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $target); //可選 curl_setopt($curl, CURLOPT_USERAGENT,'Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15'); 可選 curl_setopt($curl, CURLOPT_HTTPHEADER,array('User-Agent: Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15','Referer: http://someaddress.tld','Content-Type: multipart/form-data')); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 停止驗證證書 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//將獲取的信息以字符串返回 curl_setopt($curl, CURLOPT_POST, true); // post請求 curl_setopt($curl, CURLOPT_POSTFIELDS, $imgdata); // 提交 //可選 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // 上傳后有重定向 $r = curl_exec($curl); curl_close($curl); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看