PHP CURL
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 04: PHP CURL POST - GET - Sử dụng CURL để submit form

Trong bài này chúng ta tìm hiểu hai  phương thức POST, GET trong CURL và tìm hiểu làm thế nào để giả lập phương thức POST với PHP CURL, đồng thời chúng ta làm một ví dụ vể sử dụng CURL để submit một form với method là POST.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Method  GET trong PHP CURL

Như ta biết, dữ liệu dạng GET sẽ được gửi bằng cách thêm vào cuối URL (query string) nên nếu gửi dạng này thì rất đơn giản, ta chỉ cần truyền tham số vào URL là xong. Ở các ví dụ trước chúng ta cũng sư dụng CURL dạng get đấy. Nếu bạn không dùng CURL để lấy thông tin thì có thể sử dụng hàm file_get_contents($url) để xử lý, nhưng mình vẫn thích CURL hơn vì nó có nhiều thứ mà file_get_contents không làm được.

Ví dụ: Tạo hai file get.phpindex.php, file get.php có nhiệm vụ dùng hàm var_dum để in ra biến toàn cục $_GET, file index.php có nhiệm vụ dùng CURL để gửi tên và địa chỉ qua bằng phương thức GET.

File get.php

Bài viết này được đăng tại [free tuts .net]

<?php
var_dump($_GET);
?>
File index.php

// URL có chứa hai thông tin name và diachi
$url = 'get.php?name=NguyenVanCuong&diachi=Q12TPHCM';

// Khởi tạo CURL
$ch = curl_init($url);

// Thiết lập có return
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

curl_close($ch);

echo $result;
Kết qua

method-get-curl-php

2. Method POST trong PHP CURL

Khác với GET, nếu ta muốn gửi dữ liệu dang POST thì phải thông qua FORM, nhưng chúng ta đang giả mạo request để gửi thông tin  thì không thể có FORM được, chính vì vậy thư viện CURL đã cung cấp một số thông số giải quyết được vấn đề này. Trước tiên chúng ta tìm hiểu hai options:

  • CURLOPT_POST: giá trị của nó là số lượng dữ liệu gửi đi
  • CURLOPT_POSTFIELDS: giá trị của nó chính là một mảng các key => value, tương ứng với name và value của nó trong các thẻ input khi submit FORM

Ví dụ: tạo hai file post.php và file index.php, trong đó file post.php có nhiệm vụ dùng ham var_dump để in biến $_POST, file index.php có nhiệm vụ gửi CURL sang.

File post.php

<?php
var_dump($_POST);
?>
File index.php

$param = array(
    'name' => 'NguyenVanCuong',
    'diachi' => 'Q12TPHCM'
);

// URL có chứa hai thông tin name và diachi
$url = 'post.php';

// Khởi tạo CURL
$ch = curl_init($url);

// Thiết lập có return
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Thiết lập sử dụng POST
curl_setopt($ch, CURLOPT_POST, count($param));

// Thiết lập các dữ liệu gửi đi
curl_setopt($ch, CURLOPT_POSTFIELDS, $param); 

$result = curl_exec($ch);

curl_close($ch);

echo $result;
Kết quả

method-get-curl-php

3. Giả lập trình duyệt đang gửi CURL

Bây giờ ta có trường hợp đường link ta muốn CURL tới chỉ chấp nhập trình duyệt firefox thôi thì làm thế nào? Rất đơn giản, ta sẽ sử dụng thông số CURLOPT_USERAGENT để cấu hình.

Ví dụ: Tạo hai file agent.php và file index.php, file agent.php có nhiệm vụ in ra trình duyệt của client đang request và file index.php có nhiệm vụ gửi CURL.

File agent.php

<?php
var_dump($_SERVER['HTTP_USER_AGENT']);
?>

File index.php

// URL có chứa hai thông tin name và diachi
$url = 'http://localhost/2_develop/tour/agent.php';

// Khởi tạo CURL
$ch = curl_init($url);

// Thiết lập có return
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Thiết lập sử dụng Firefox
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');

$result = curl_exec($ch);

curl_close($ch);

echo $result;

Kết quả

gia lap user agent trong curl php png

Bạn thấy đó, tôi đang sử dụng trình duyệt Chrome để gửi mà phía Server lại nhận được kết quả là Firefox.

4. Lời kết

Bạn thấy CURL đúng là quá hay phải không nào, bạn có thể sử dụng CURL POST để xây dựng ứng dụng đăng nhập vào một site nào đó hoặc thực hiện đăng bài tự động chẳng hạn. Tuy nhiên không phải đơn giản nhé, có những website học check rất kỹ và có token hoặc captcha nên bạn sẽ phải xử lý làm sao lấy được các thông tin đó rồi đưa vào tham số của CURL để gửi.

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top