PHP Curl Post 簡介
在日常開發(fā)的過程中,我們經(jīng)常需要用到 HTTP 請求,其中最常用的是 GET 和 POST 請求。其中,POST 請求不僅可以提供更多的參數(shù)傳遞,還能夠更安全地處理一些敏感數(shù)據(jù)。而使用 PHP 編寫 POST 請求時,我們則需要用到一個非常優(yōu)秀的工具——Curl。
Curl 是一個非常優(yōu)秀的服務(wù)器端 Http 客戶端工具,可以用來模擬瀏覽器發(fā)送請求,借助它我們可以向 Web 服務(wù)器發(fā)送各種請求,例如:GET/POST/PUT/DELETE 等請求。而在 PHP 中,我們可以通過調(diào)用 Curl 來完成各種 Http 請求。下面,讓我們來詳細(xì)了解一下 Curl 在 PHP 下 POST 請求的使用。
基本語法
```php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/post.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "foo=bar&baz=boom");
curl_exec($ch);
curl_close($ch);
```
這里使用的是以比較傳統(tǒng)的方式使用 Curl 發(fā) Post 請求。下面我們一一講解 Curl 的各項參數(shù)代表的意義。
CURLOPT_URL:需要請求的 URL。
CURLOPT_POST:是否為 post 請求,true 表示是。
CURLOPT_POSTFIELDS:請求參數(shù),可以是數(shù)組或字符串形式的值。
CURLOPT_RETURNTRANSFER:將回調(diào)放在一個字符串中返回,而不是直接輸出。
CURLOPT_HEADER:啟用時會將頭文件的信息作為數(shù)據(jù)流輸出。
接下來,就讓我們看看 Curl Post 請求常用的一些擴(kuò)展方式。
通過數(shù)組方式傳參
有時候我們需要傳遞的參數(shù)較多,直接利用字符串的方式傳遞,會讓我們的參數(shù)變得非常混亂且難以理解,這時候我們可以使用一個數(shù)組的方式來進(jìn)行參數(shù)傳遞。以下是一個使用數(shù)組傳參的示例:
```php
$params = array('foo' =>'bar', 'baz' =>'boom');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/post.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_exec($ch);
curl_close($ch);
```
此時 Curl 將以 multipart/form-data 表單格式發(fā)送數(shù)據(jù),也就是說我們可以分別獲取每個參數(shù)。
設(shè)置 User-Agent
當(dāng)我們利用 Curl 發(fā) Post 請求時,有時候我們需要模擬一些瀏覽器或客戶端身份,這時候我們可以設(shè)置 Curl 的 User-Agent 參數(shù)。以下是一個設(shè)置 User-Agent 的示例:
```php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/post.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "foo=bar&baz=boom");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_exec($ch);
curl_close($ch);
```
在這里,我們將 Curl 的 User-Agent 參數(shù)設(shè)置為一個 Chrome 瀏覽器的假冒身份,服務(wù)器將以為我們發(fā)出的請求來自于 Chrome 瀏覽器。
設(shè)置 Proxy
當(dāng)我們向一個目標(biāo)地址發(fā)出請求時,有時候我們需要利用一些代理服務(wù)器來進(jìn)行中轉(zhuǎn),這時候我們可以利用 Curl 的 CURLOPT_PROXY 參數(shù)來進(jìn)行代理設(shè)置。以下是一個設(shè)置代理的示例:
```php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/post.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "foo=bar&baz=boom");
curl_setopt($ch, CURLOPT_PROXY, "http://192.168.1.42:8080");
curl_exec($ch);
curl_close($ch);
```
在這個示例中,我們將代理地址設(shè)置為 http://192.168.1.42:8080。
總結(jié)
Curl 在 PHP 下 Post 請求的使用是非常簡單的,并且也非常實(shí)用。在實(shí)際開發(fā)中,我們常常需要向一些服務(wù)器發(fā)送 POST 請求,而此時 Curl 則可以成為我們不可缺少的利器。在掌握 Curl 的基本語法之后,我們還可以利用一些擴(kuò)展方式來進(jìn)行功能的擴(kuò)展。掌握了這些方法之后,我們可以更加輕松地完成各種 HTTP 請求。
上一篇PHP cur auth
下一篇php cuit