首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP cURL 實作 HTTP/HTTPS 請求與模擬登入完整指南

     編輯:PHP 相關知識

前言

cURL 是 PHP 呼叫外部 API、模擬瀏覽器請求的利器。本文說明擴充套件安裝、HTTP POST 與 HTTPS POST 兩種常見情境,並提供可直接使用的封裝函式。

環境準備

  1. 開啟 php.ini,啟用 extension=php_curl.dll。
  2. 確認 extension_dir 路徑下有 php_curl.dll。
  3. 將 libeay32.dll、ssleay32.dll 複製到系統目錄(如 C:/Windows/System32)。
  4. 重啟 Web 伺服器。

HTTP POST 請求封裝

function _http_curl_post($url, $data) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
    curl_setopt($ch, CURLOPT_TIMEOUT, 4);
    curl_setopt($ch, CURLOPT_HEADER, false);

    if ($data) {
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "value=" . json_encode($data)); // 依 API 格式調整
    }

    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

呼叫範例

$params = [
    'id' => 1,
    'web_name' => '好腳本',
    'web_url' => 'https://www.bKjia.c0m/',
    'web_miaoshu' => '腳本編程示例'
];
$response = _http_curl_post($url, $params);
$arr = json_decode($response, true);

HTTPS POST 請求封裝(忽略憑證驗證)

針對自簽憑證或測試環境,需關閉 SSL 驗證:

function _https_curl_post($url, $vars) {
    $fields_string = '';
    foreach ($vars as $key => $value) {
        $fields_string .= $key . '=' . $value . '&';
    }
    $fields_string = rtrim($fields_string, '&');

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 關鍵:忽略憑證驗證
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, count($vars));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);

    $data = curl_exec($ch);
    curl_close($ch);
    return $data ?: false;
}

常用選項說明

選項用途
CURLOPT_RETURNTRANSFER將回傳內容作為字串而非直接輸出
CURLOPT_FOLLOWLOCATION自動追蹤 301/302 重導向
CURLOPT_SSL_VERIFYPEER驗證 SSL 憑證(生產環境建議 true)
CURLOPT_POSTFIELDSPOST 欄位資料,陣列會自動編碼為 multipart/form-data

安全提醒

  • 生產環境請勿長期關閉 CURLOPT_SSL_VERIFYPEER,應正確部署 CA 憑證。
  • 傳送敏感資料務必使用 HTTPS。
  • 設定合理的 Timeout 避免阻塞。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved