PHP curl 使用

5 月 23, 2016

基本使用

使用 CURLOPT_URL 設定連結網址,然後執行即可。順利的話就可以取得回傳網頁原始碼

--

不直接顯示取得內容

將 CURLOPT_RETURNTRANSFER 設定為 true 即可

--

加上 POST 資料

增加 CURLOPT_POSTFIELDS 參數,傳遞 array() 陣列

Google+ 在 OAuth 內的資訊必須使用 POST 傳遞,使用方法大致如下

--

取得處理狀態

curl_getinfo() 可以得知執行後結果

--

設定或增加其他功能、參數

設定 REFERER 參照來源網址

--

如何得知送出的 Head ?

步驟

  1. 設定 CURLINFO_HEADER_OUT 為 true
  2. 使用 curl_getinfo() 取得輸出結果, 送出 Head 也在結果內

--

增加自定義 Head

--

增加自定義 - 傳遞連線 IP

HEAD 名稱前面強制加上 HTTP_ 開頭,因此取得 IP 時必須相互搭配

--

目的端 PHP 取得 IP 程式方法

首先請先看以下參考連結

這裡討論到一段網路普遍「謠傳」的取得 IP 代碼

大部分抄這段程式碼的人都不知道為什麼要先取 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 這兩個值,等學會 curl 之後就會知道大大說這是唬爛是正確的。

想要知道接收端資訊必須另外儲存,文字檔、資料庫等都可以,為了方便這裡使用文字檔

--

隱藏 _SERVER['REMOTE_ADDR']

設定使用 Proxy Server 代理連線,對方取得的 REMOTE_ADDR 就是 Proxy Server 的 IP

--

送出 HTTP Auth

如果有一個網頁使用 HTTP Auth 使用者認證,該如何使用 PHP curl 登錄取得資料?

以下是 zopim 的取得聊天紀錄範例,本來是使用 Linux curl 指令操作的,例如:

PHP 可以這樣實現

--

Timeout 以及取得 Timeout 錯誤

--

上傳檔案 PHP 5.4 以下

將檔案存放路徑的檔案名稱前加上 @ 即可

--

上傳檔案 PHP 5.5 以上

如要沿用 5.4 舊方法則設定 curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); 即可

--

HTTP 417 - Expectation Failed

--

 19,286 total views,  6 views today