HTG.VN: Kênh quảng cáo và công cụ tìm kiếm HTG TRUYỀN THÔNG - QUẢNG CÁO - HƯNG THỊNH
LuatManhDuc.com - law.hungthinhgroup.net - smi
HTG.VN - Thuê tài - Thuê xe - BaThanh.Net
Thương Hiệu Doanh Nghiệp là cái tên dễ nhớ, gần gũi và Thương Hiệu là mục tiêu chung của các doanh nghiệp. Thương Hiệu Doanh Nghiệp là nơi hội tụ Thành công - Thịnh vượng - Phồn vinh của các doanh nghiệp. Thương Hiệu Doanh Nghiệp là nơi tôn vinh và khẳng định đẳng cấp thương hiệu của doanh nghiệp thương hiệu.

Một số ví dụ PHP hay về cUrl

cURL là một hàm hay của PHP. Hàm này giúp ta lấy, chiết tách hay đọc nội dung một trang web khác ngay trên Server của chúng ta. Một thuận lợi lớn nhất mà hàm curl này mang lại đó là tốc độ, nhanh hơn rất nhiều so với hàm open file  gần gấp 3 lần. cURL được ví như một công cụ giao tiếp đa giao thức, giúp ta xem hoặc tải một địa chỉ Trước khi lướt qua các bài ví dụ, chúng ta nên xem lại cách tạo, gọi và thực thi một hàm curl nhé.

Cách cơ bản để sử dụng hàm cURL

Một thủ tục cUrl hoàn chỉnh phải trải qua các bước sau:

01
02
03
04
05
06
07
08
09
10
11
$ch = curl_init(); //khai báo curl
 
curl_setopt($ch, CURLOPT_URL,"http://minhnhut.info"); // xác định địa chỉ cần thực thi
 
curl_setopt($ch, CURLOPT_POST, 1); // GET hay POST
 
// và các tham số khác ... dùng curl_setopt để dịnh giá trị cho mỗi tham số.
 
curl_exec ($ch); // thực thi curl
 
curl_close ($ch); // đóng curl để giải phóng vùng nhớ

Bạn có thể thiết đặt thêm 1 hoặc nhiều option nữa cho curl bằng curl_setopt. Các curl_setopt này phải được đặt trước curl_exec thì mới có hiệu lực.

Một số ví dụ PHP hay về cUrl

Trong mỗi ví dụ mình đều có comment, chắc là không cần phải giải thích thêm.

Đọc dữ liệu từ một url dưới dạng binary và lưu vào biến

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
// Vẫn như thường lệ, phải khai báo cái đã
 
$ch = curl_init("http://minhnhut.info/image.jpg);
 
// khai báo curl có kèm url
// tức đã set luôn CURLOPT_URL cho curl
 
if (! $ch) {
 die( "Lỗi trong quá trình khởi tạo cURL" );
}
 
// Chúng ta sẽ nhận trị trả về và nhận dưới dạng binary
// Dó đó ta phải set 2 option như sau
 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
 
// Nếu không set như trên, bạn sẽ không nhận được gì
// khi curl được thực thi, tức giá trị NULL
 
// Chạy curl và lưu trị trả về vào $data
$data = curl_exec($ch);
 
// đóng kết nối
curl_close($ch);
 
// Lúc bây giờ $data đã lưu file ảnh vừa lây được từ
// url khai báo ban đầu
 
header("Content-type: image/jpeg");
 
// Định dạng ảnh là .jpg, do đó content-type như trên
// cũng không có gì quá khó hiểu
 
// xuất dữ liệu ra và trả về cho người duyệt web
print( $data );
?>

Trong ví dụ trên, chúng ta dùng curl để load một file ảnh từ địa chỉ và lưu nó vào biến $data. Cuối cùng ta xuất biến $data này ra, tức xuất file ảnh ra…  Nói nôm na, ta tải file ảnh về và xuất nó ra cho người dùng coi.

Upload file gián tiếp lên trang web khác

Giả sử ta có form sau:

1
2
3
4
5
6
<form enctype="multipart/form-data" action="somewhere.php" method="post">
    <input type="file" name="upfile">
    <input type="text" name="filename">
    <input type="text" name="description">
    <input type="submit" value="upload">
form>

Vâng đây là một form dùng để upload file. Chúng ta có thể dùng curl để upload gián tiếp một file trên host của ta (máy chủ đang thực thi lệnh curl) lên máy chủ đích. Trước khi thực hiện ví dụ, ta cần chú trọng một số vấn đề trước khi làm thử thủ thuật này.

  1. giá trị name của thẻ input: “name=”
  2. Loại tệp tin của file sẽ dùng để upload phải phù hợp với loại tệp tin mà máy chủ đích yêu cầu, nếu không muốn bị máy chủ đích từ chói.
  3. Địa chỉ tuyệt đối đến nơi sẽ nhận dữ liệu từ form có thể suy ra từ chỗ “action=”

Xem ví dụ PHP sau, giả sử form này nằm trên blog minhnhut.info :P :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
// địa chỉ đến file cần upload
   $uploadfile="/tmp/myimage.jpg";
 
// và khai báo curl
// địa chỉ ở đây bạn phải suy ra từ  thuộc tính
// action của form, minhnhut.info chỉ là ví dụ
   $ch = curl_init("http://minhnhut.info/somewhere.php");
 
// Đặt thuộc tính
// trước hết là các biến cho gói dữ liệu POST
   curl_setopt($ch, CURLOPT_POSTFIELDS,
               array('sampfile'=>"@$uploadfile",
                     'shoesize'=>'9',
                     'filename'=>"fake name for file"));
 
// cài chế độ lấy nội dung trả về
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 
// thực thi curl, đồng thời lưu trị trả về vào biến
   $postResult = curl_exec($ch);
 
//đóng kết nối và xuất ra nội dung trang web trả về.
   curl_close($ch);
   print "$postResult";
 
?>

Sử dụng Cookie Jar, lưu trữ cookie

curl có một tính năng độc đáo là lưu trữ lại cookie trong quá trình thực thi lại thành một tệp tinh lưu trên host hiện hành. File cookie có thể dùng để nạp vào curl cho lần truy vấn sau, rất thuận tiện nếu trang web đích yêu cầu đăng nhập, hoặc làm một số hành động kiểm tra cookie.

Thủ thuật này gồm 2 ví dụ. Ví dụ 1, lưu cookie với cookie jar:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
 
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName");
curl_setopt($ch, CURLOPT_URL,"http://minhnhut.info/login.php");
 
// ví dụ thôi nhá =,=
 
curl_setopt($ch, CURLOPT_POST, 1);
 
// thiết lập POST, và nội dung gói dữ liệu POST
 
curl_setopt($ch, CURLOPT_POSTFIELDS, "UserID=minhnhut&password=123456");
 
curl_exec ($ch);
 
// và đừng quên đóng curl lại
 
curl_close ($ch);
 
?>

Đoạn code trên sẽ truy cập vào minhnhut.info với username là minhnhut và 123456 là mật khẩu (giả sử). Sau đó nó sẽ lưu toàn bộ cookie minhnhut.info thiết lập vào file cookieFileName. Mọi chuyện diễn ra khá đơn giản.

Tiếp theo là ví dụ 2, ta sẽ sử dụng lại file cookie từ ví dụ 1.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// dùng lại file cookie đã lưu
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName");
// giả sử dashboard.php là trang mật, chỉ khi đã đăng nhập mới có
// quyền truy cập
curl_setopt($ch, CURLOPT_URL,"http://minhnhut.info/dashboard.php");
 
//thực thi
$data = curl_exec($ch);
 
// đóng
curl_close ($ch);
 
// xuất ra nội dung dashboard.php đã truy cập
echo htmlentities($data);

Ở ví dụ 2 trên ta giả sử dashboard.php được bảo vệ bằng mật khẩu, ở ví dụ 1 ta đã đăng nhập và lưu lại cookie, ở ví dụ 2 ta dùng lại cookie cũ tức đã được xác nhận là đã đăng nhập, dó đó curl sẽ có thể truy cập được nội dung dashboard.php trên minhnhut.info.

htmlentties($data) dùng để làm gì?
lệnh này dùng để encode mã html trong biến $data. Làm cho nó hiển thị như một văn bản thô. Như vậy thì echo ra ta mới xem được, đúng không nào. Kết quả của echo sẽ là bằng chứng, chứng minh curl đã truy cập được dashboard hay chưa.

Trên là 3 ví dụ ngắn khá hay về curl trong php. Curl có vô vàn ứng dụng, với 3 ví dụ này hy vọng sẽ giúp bạn hiểu được nhiều hơn về hàm curl kì diệu này.

Chia sẻ Facebook



THÔNG TIN MỚI
HOẠT ĐỘNG KINH DOANH
QUẢNG CÁO - LIÊN KẾT
Võ Thuật


QUẢNG CÁO

0912 82 2628

CÔNG TY TNHH MTV THƯƠNG HIỆU VẬN TẢI BA THÀNH
Địa chỉ: 248/25 Bùi Thị Xuân, Q. Tân Bình, Tp. Hồ Chí Minh
Điện thoại: 08.6899.6850 & 08.6899.6846 - Hotline: 0912 82 2628
Email: info@thuonghieudoanhnghiep.vn
THƯƠNG HIỆU DOANH NGHIỆP