CURL trong PHP là gì?


220

Trong PHP, tôi thấy từ cURL trong nhiều dự án PHP. Nó là gì? Làm thế nào nó hoạt động?

Liên kết tham khảo: cURL



1
Vui lòng kiểm tra dưới 2 liên kết, tôi nghĩ rằng sẽ giúp bạn hiểu được cURL là gì. phpsense.com/2007/php-curl-fifts blog.unitedheroes.net/curl
Dhaval

Câu trả lời:


245

cURL là một thư viện cho phép bạn thực hiện các yêu cầu HTTP trong PHP. Mọi thứ bạn cần biết về nó (và hầu hết các phần mở rộng khác) có thể được tìm thấy trong hướng dẫn sử dụng PHP .

Để sử dụng các hàm cURL của PHP, bạn cần cài đặt gói »libcurl. PHP yêu cầu bạn sử dụng libcurl 7.0.2-beta trở lên. Trong PHP 4.2.3, bạn sẽ cần libcurl phiên bản 7.9.0 trở lên. Từ PHP 4.3.0, bạn sẽ cần một phiên bản libcurl là 7.9.8 trở lên. PHP 5.0.0 yêu cầu phiên bản libcurl 7.10.5 trở lên.

Bạn cũng có thể thực hiện các yêu cầu HTTP mà không cần cURL, mặc dù yêu cầu allow_url_fopenphải được bật trong php.initệp của bạn .

// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');

1
@Johannes, Có thể yêu cầu bài đăng HTTP mà không có cURL không?
Pacerier

2
điều đó có nghĩa là, nếu trong máy chủ 'allow_url_fopen' không được bật thì chúng ta không thể sử dụng hàm file_get_contents (), nhưng trong trường hợp đó chúng ta có thể sử dụng chức năng curl cho cùng một mục đích không? tôi có đúng không
ARUN

3
@Arun Có nếu 'allow_url_fopen' không được bật, bạn có thể sử dụng curl cho cùng một tác vụ thay vì file_get_contents () func. Curl cho phép bạn thiết lập nhiều tùy chọn hơn như dữ liệu POST, cookie, v.v. mà file_get_contents () không cung cấp.
Dinesh Nagar

157

cURL là cách bạn có thể nhấn URL từ mã của mình để nhận phản hồi html từ nó. cURL có nghĩa là URL khách hàng cho phép bạn kết nối với các URL khác và sử dụng phản hồi của họ trong mã của bạn.


3
trong Javascript giống như bạn làm ajax trong mã của bạn. Những điều khác nhau với PHP bạn thực hiện đồng bộ trong khi trong Javascript, bạn thực hiện không đồng bộ.
Faris Rayhan

68

HIỆN TẠI trong PHP:

Tóm lược:

Các curl_execlệnh trong PHP là một cầu nối để sử dụng curltừ giao diện điều khiển. curl_exec giúp dễ dàng nhanh chóng và dễ dàng thực hiện các yêu cầu GET / POST, nhận phản hồi từ các máy chủ khác như JSON và các tệp tải xuống.

Cảnh báo nguy hiểm:

curllà xấu xa và nguy hiểm nếu được sử dụng không đúng cách vì đó là tất cả về việc lấy dữ liệu từ internet. Ai đó có thể nhận được giữa cuộn tròn của bạn và máy chủ khác và đưa rm -rf /vào phản hồi của bạn, và tại sao tôi lại rơi vào bảng điều khiển và ls -lthậm chí không hoạt động nữa? Bởi vì bạn đã đánh giá thấp sức mạnh nguy hiểm của curl. Đừng tin tưởng bất cứ điều gì quay trở lại từ curl để được an toàn, ngay cả khi bạn đang nói chuyện với máy chủ của riêng bạn. Bạn có thể rút lại phần mềm độc hại để giảm bớt sự ngu ngốc của cải.

Ví dụ:

Những điều này đã được thực hiện trên Ubuntu 12.10

  1. Curl cơ bản từ dòng lệnh:

    el@apollo:/home/el$ curl http://i.imgur.com/4rBHtSm.gif > mycat.gif
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  492k  100  492k    0     0  1077k      0 --:--:-- --:--:-- --:--:-- 1240k

    Sau đó, bạn có thể mở gif của bạn trong firefox:

    firefox mycat.gif

    Những con mèo vinh quang tiến hóa Toxoplasma gondii để khiến phụ nữ giữ mèo xung quanh và đàn ông cũng vậy để giữ những người phụ nữ xung quanh.

  2. Ví dụ cURL nhận yêu cầu nhấn google.com, lặp lại dòng lệnh:

    Điều này được thực hiện thông qua thiết bị đầu cuối phpsh:

    php> $ch = curl_init();
    
    php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
    
    php> curl_exec($ch);

    Mà in và kết xuất một mớ hỗn độn của html và javascript (từ google) vào bảng điều khiển.

  3. Ví dụ cURL đặt văn bản phản hồi vào một biến:

    Điều này được thực hiện thông qua thiết bị đầu cuối phpsh:

    php> $ch = curl_init();
    
    php> curl_setopt($ch, CURLOPT_URL, 'http://i.imgur.com/wtQ6yZR.gif');
    
    php> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    php> $contents = curl_exec($ch);
    
    php> echo $contents;

    Biến bây giờ chứa nhị phân là một gif hoạt hình của một con mèo, khả năng là vô hạn.

  4. Thực hiện cuộn tròn từ trong tệp PHP:

    Đặt mã này vào một tệp có tên myphp.php:

    <?php
      $curl_handle=curl_init();
      curl_setopt($curl_handle,CURLOPT_URL,'http://www.google.com');
      curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
      curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
      $buffer = curl_exec($curl_handle);
      curl_close($curl_handle);
      if (empty($buffer)){
          print "Nothing returned from url.<p>";
      }
      else{
          print $buffer;
      }
    ?>

    Sau đó chạy nó thông qua dòng lệnh:

    php < myphp.php

    Bạn đã chạy myphp.php và thực thi các lệnh đó thông qua trình thông dịch php và đổ một tấn html và javascript lộn xộn ra màn hình.

    Bạn có thể làm GETPOSTyêu cầu với curl, tất cả những gì bạn làm là chỉ định các tham số như được xác định ở đây: Sử dụng curl để tự động hóa các công việc HTTP

Nhắc nhở về nguy hiểm:

Hãy cẩn thận vứt bỏ sản lượng curl xung quanh, nếu bất kỳ điều nào được giải thích và thực thi, hộp của bạn đã được sở hữu và thông tin thẻ tín dụng của bạn sẽ được bán cho bên thứ ba và bạn sẽ nhận được khoản phí 900 đô la bí ẩn từ một công ty sàn một người ở Alabama đó là phía trước cho vòng tội phạm gian lận thẻ tín dụng ở nước ngoài.


2
Bạn có thể cung cấp một liên kết sao lưu 'nguy hiểm' mà bạn đề cập ở đây không?
floatingLomas

1
@floatingLomas Điều Eric cố gắng giải thích là một vấn đề hiện diện với tất cả nội dung do người dùng cung cấp: Bạn không thể tin tưởng bất cứ ai. Như với nội dung do người dùng cung cấp, có thể khai thác cURL bằng cách sử dụng MITM đơn giản để tiêm mã độc vào ứng dụng của bạn. Tất nhiên đây chỉ là một vấn đề nếu nó được "diễn giải và thực thi" như Eric đã nói một cách chính xác. Chỉ cần tìm kiếm eval là xấu và bạn sẽ tìm thấy rất nhiều rủi ro bảo mật có thể xảy ra (ví dụ stackoverflow.com/questions/951373/when-is-eval-evil-in-php )
Fabio Poloni

7
@floatingLomas ... cũng vậy, Eric dường như có sự hoang tưởng về các công ty sàn một người ở Alabama tính phí cho anh ta $ 900.
Fabio Poloni

Có một sự thay thế ngoài iframe không?
Jennifer Michelle

1
Sẽ không hoang tưởng nếu họ thực sự bán sàn cho bạn.
bến tàu

24

cURL là cách bạn có thể nhấn URL từ mã của mình để nhận phản hồi HTML từ đó. Nó được sử dụng cho dòng lệnh cURL từ ngôn ngữ PHP.

<?php
// Step 1
$cSession = curl_init(); 
// Step 2
curl_setopt($cSession,CURLOPT_URL,"http://www.google.com/search?q=curl");
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession,CURLOPT_HEADER, false); 
// Step 3
$result=curl_exec($cSession);
// Step 4
curl_close($cSession);
// Step 5
echo $result;
?> 

Bước 1: Khởi tạo phiên curl bằng cách sử dụng curl_init().

Bước 2: Đặt tùy chọn cho CURLOPT_URL. Giá trị này là URL mà chúng tôi đang gửi yêu cầu. Nối một cụm từ tìm kiếm curlbằng tham số q=. Đặt tùy chọn cho CURLOPT_RETURNTRANSFER. True sẽ bảo curl trả về chuỗi thay vì in ra. Đặt tùy chọn cho CURLOPT_HEADER, false sẽ báo cho curl bỏ qua tiêu đề trong giá trị trả về.

Bước 3: Thực hiện phiên curl bằng cách sử dụng curl_exec().

Bước 4: Đóng phiên curl chúng tôi đã tạo.

Bước 5: Xuất chuỗi trả về.

public function curlCall($apiurl, $auth, $rflag)
{
    $ch = curl_init($apiurl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    if($auth == 'auth') { 
        curl_setopt($ch, CURLOPT_USERPWD, "passw:passw");
    } else {
        curl_setopt($ch, CURLOPT_USERPWD, "ss:ss1");
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $dt = curl_exec($ch);        
    curl_close($ch);
    if($rflag != 1) {
        $dt = json_decode($dt,true);        
    }
    return $dt;
}

Điều này cũng được sử dụng để xác thực. Chúng tôi cũng có thể đặt tên người dùng và mật khẩu để xác thực.

Để biết thêm chức năng, xem hướng dẫn sử dụng hoặc hướng dẫn sau:

http://php.net/manual/en/ref.curl.php
http://www.startutorial.com/articles/view/php-curl


16

Trước hết hãy cho chúng tôi hiểu các khái niệm về curl, libcurl và PHP / cURL.

  1. curl : Một công cụ dòng lệnh để nhận hoặc gửi tệp bằng cú pháp URL.

  2. libcurl : một thư viện được tạo bởi Daniel Stenberg, cho phép bạn kết nối và giao tiếp với nhiều loại máy chủ khác nhau với nhiều loại giao thức khác nhau. libcurl hiện hỗ trợ các giao thức http, https, ftp, gopher, telnet, dict, file và ldap. libcurl cũng hỗ trợ các chứng chỉ HTTPS, HTTP POST, HTTP PUT, tải lên FTP (điều này cũng có thể được thực hiện với phần mở rộng ftp của PHP), tải lên dựa trên mẫu HTTP, proxy, cookie và xác thực mật khẩu + người dùng.

  3. PHP / cURL : Mô-đun cho PHP giúp các chương trình PHP có thể sử dụng libcurl.

Làm thế nào để sử dụng nó:

bước 1 : Khởi tạo phiên curl sử dụng curl_init ().

step2 : Đặt tùy chọn cho CURLOPT_URL. Giá trị này là URL mà chúng tôi đang gửi yêu cầu đến. Hãy thêm cụm từ tìm kiếm "curl" bằng cách sử dụng tham số "q =". Đặt tùy chọn CURLOPT_RETURNTRANSFER, true sẽ báo cho curl trả lại chuỗi thay vì in ra. Đặt tùy chọn cho CURLOPT_HEADER, false sẽ báo cho curl bỏ qua tiêu đề trong giá trị trả về.

bước 3 : Thực hiện phiên curl bằng curl_exec ().

step4 : Đóng phiên curl mà chúng ta đã tạo.

bước 5 : Xuất chuỗi trả về.

Tạo DEMO :

Bạn sẽ cần tạo hai tệp PHP và đặt chúng vào một thư mục mà máy chủ web của bạn có thể phục vụ các tệp PHP từ đó. Trong trường hợp của tôi, tôi đặt chúng vào / var / www / để đơn giản.

1. helloservice.php2. demo.php

helloservice.php rất đơn giản và về cơ bản chỉ phản hồi lại bất kỳ dữ liệu nào nó nhận được:

<?php
  // Here is the data we will be sending to the service
  $some_data = array(
    'message' => 'Hello World', 
    'name' => 'Anand'
  );  

  $curl = curl_init();
  // You can also set the URL you want to communicate with by doing this:
  // $curl = curl_init('http://localhost/echoservice');

  // We POST the data
  curl_setopt($curl, CURLOPT_POST, 1);
  // Set the url path we want to call
  curl_setopt($curl, CURLOPT_URL, 'http://localhost/demo.php');  
  // Make it so the data coming back is put into a string
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  // Insert the data
  curl_setopt($curl, CURLOPT_POSTFIELDS, $some_data);

  // You can also bunch the above commands into an array if you choose using: curl_setopt_array

  // Send the request
  $result = curl_exec($curl);

  // Get some cURL session information back
  $info = curl_getinfo($curl);  
  echo 'content type: ' . $info['content_type'] . '<br />';
  echo 'http code: ' . $info['http_code'] . '<br />';

  // Free up the resources $curl is using
  curl_close($curl);

  echo $result;
?>

Trang 2.demo.php , bạn có thể xem kết quả:

<?php 
   print_r($_POST);
   //content type: text/html; charset=UTF-8
   //http code: 200
   //Array ( [message] => Hello World [name] => Anand )
?>

Xin chào, bạn vui lòng cho tôi biết về trang 1. bằng cách sử dụng-curl.php
Kaveh

@Kaveh: xin lỗi, tôi quên trang thứ hai. Cập nhật câu trả lời. Bây giờ xin vui lòng kiểm tra.
Anand Pandey

12

Phần mở rộng cURL cho PHP được thiết kế để cho phép bạn sử dụng nhiều nguồn tài nguyên web từ trong tập lệnh PHP của mình.


10

cURL trong PHP là cầu nối để sử dụng dòng lệnh cURL từ ngôn ngữ php


7

Xoăn

  • cURL là cách bạn có thể nhấn URL từ mã của mình để nhận phản hồi HTML từ đó.
  • Nó được sử dụng cho dòng lệnh cURL từ ngôn ngữ PHP.
  • cURL là một thư viện cho phép bạn thực hiện các yêu cầu HTTP trong PHP.

PHP hỗ trợ libcurl, một thư viện được tạo bởi Daniel Stenberg, cho phép bạn kết nối và giao tiếp với nhiều loại máy chủ khác nhau với nhiều loại giao thức khác nhau. libcurl hiện hỗ trợ các giao thức http, https, ftp, gopher, telnet, dict, file và ldap. libcurl cũng hỗ trợ các chứng chỉ HTTPS, HTTP POST, HTTP PUT, tải lên FTP (điều này cũng có thể được thực hiện với phần mở rộng ftp của PHP), tải lên dựa trên mẫu HTTP, proxy, cookie và xác thực mật khẩu + người dùng.

Khi bạn đã biên dịch PHP với hỗ trợ cURL, bạn có thể bắt đầu sử dụng các hàm cURL. Ý tưởng cơ bản đằng sau các hàm cURL là bạn khởi tạo phiên cURL bằng cách sử dụng curl_init (), sau đó bạn có thể đặt tất cả các tùy chọn của mình cho việc chuyển qua curl_setopt (), sau đó bạn có thể thực hiện phiên với curl_exec () và sau đó bạn kết thúc phiên của bạn bằng cách sử dụng curl_close ().

Mã mẫu

// error reporting
error_reporting(E_ALL);
ini_set("display_errors", 1);

//setting url
$url = 'http://example.com/api';

//data
$data = array("message" => "Hello World!!!");

try {
    $ch = curl_init($url);
    $data_string = json_encode($data);

    if (FALSE === $ch)
        throw new Exception('failed to initialize');

        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

        $output = curl_exec($ch);

    if (FALSE === $output)
        throw new Exception(curl_error($ch), curl_errno($ch));

    // ...process $output now
} catch(Exception $e) {

    trigger_error(sprintf(
        'Curl failed with error #%d: %s',
        $e->getCode(), $e->getMessage()),
        E_USER_ERROR);
}

Để biết thêm thông tin, vui lòng kiểm tra -


1

Curl không là gì ngoài một phần mở rộng của PHP, kế thừa các hành vi của lệnh & thư viện curl thông thường được viết chủ yếu cho công cụ dòng lệnh Linux / Unix

Curl là gì? cURL là viết tắt của URL khách hàng. CURL được sử dụng để gửi dữ liệu tới bất kỳ URL nào. Để biết thêm chi tiết về chính xác curl là gì, bạn có thể truy cập Trang web CURL

cURL trong PHP Bây giờ, khái niệm tương tự được giới thiệu trong PHP, để gửi dữ liệu tới bất kỳ URL có thể truy cập nào thông qua giao thức khác nhau, ví dụ: HTTP hoặc FTP. Để biết thêm chi tiết, bạn có thể tham khảo Hướng dẫn Curl PHP


1

Hàm uốn cong Php (POST, GET, DELETE, PUT)

function curl($post = array(), $url, $token = '', $method = "POST", $json = false, $ssl = true){
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $url);    
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
    if($method == 'POST'){
        curl_setopt($ch, CURLOPT_POST, 1);
    }
    if($json == true){
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json','Authorization: Bearer '.$token,'Content-Length: ' . strlen($post)));
    }else{
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSLVERSION, 6);
    if($ssl == false){
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    }
    // curl_setopt($ch, CURLOPT_HEADER, 0);     
    $r = curl_exec($ch);    
    if (curl_error($ch)) {
        $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $err = curl_error($ch);
        print_r('Error: ' . $err . ' Status: ' . $statusCode);
        // Add error
        $this->error = $err;
    }
    curl_close($ch);
    return $r;
}

0

Lớp Php curl (NHẬN, BÀI VIẾT, TẢI LÊN TẢI LÊN, SESSION, GỬI JSON JSON, FORCE TỰ CHỌN SSL / TLS):

<?php
    // Php curl class
    class Curl {

        public $error;

        function __construct() {}

        function Get($url = "http://hostname.x/api.php?q=jabadoo&txt=gin", $forceSsl = false,$cookie = "", $session = true){
            // $url = $url . "?". http_build_query($data);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, false);        
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if($session){
                curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
            }
            if($forceSsl){
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
            }
            if(!empty($cookie)){            
                curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
            }
            $info = curl_getinfo($ch);
            $res = curl_exec($ch);        
            if (curl_error($ch)) {
                $this->error = curl_error($ch);
                throw new Exception($this->error);
            }else{
                curl_close($ch);
                return $res;
            }        
        }

        function GetArray($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
            $url = $url . "?". http_build_query($data);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if($session){
                curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
            }
            if($forceSsl){
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
            }
            if(!empty($cookie)){
                curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
            }
            $info = curl_getinfo($ch);
            $res = curl_exec($ch);        
            if (curl_error($ch)) {
                $this->error = curl_error($ch);
                throw new Exception($this->error);
            }else{
                curl_close($ch);
                return $res;
            }        
        }

        function PostJson($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
            $data = json_encode($data);
            $ch = curl_init($url);                                                                      
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);                                                                  
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if($session){
                curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
            }
            if($forceSsl){
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
            }
            if(!empty($cookie)){
                curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
            }
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Authorization: Bearer helo29dasd8asd6asnav7ffa',                                                      
                'Content-Type: application/json',                                                                                
                'Content-Length: ' . strlen($data))                                                                       
            );        
            $res = curl_exec($ch);
            if (curl_error($ch)) {
                $this->error = curl_error($ch);
                throw new Exception($this->error);
            }else{
                curl_close($ch);
                return $res;
            } 
        }

        function Post($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $files = array('ads/ads0.jpg', 'ads/ads1.jpg'), $forceSsl = false, $cookie = "", $session = true){
            foreach ($files as $k => $v) {
                $f = realpath($v);
                if(file_exists($f)){
                    $fc = new CurlFile($f, mime_content_type($f), basename($f)); 
                    $data["file[".$k."]"] = $fc;
                }
            }
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");        
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    
            curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // !!!! required as of PHP 5.6.0 for files !!!
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if($session){
                curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
            }
            if($forceSsl){
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
            }
            if(!empty($cookie)){
                curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
            }
            $res = curl_exec($ch);
            if (curl_error($ch)) {
                $this->error = curl_error($ch);
                throw new Exception($this->error);
            }else{
                curl_close($ch);
                return $res;
            } 
        }
    }
?>

Thí dụ:

<?php
    $urlget = "http://hostname.x/api.php?id=123&user=bax";
    $url = "http://hostname.x/api.php";
    $data = array("name" => "Max", "age" => "36");
    $files = array('ads/ads0.jpg', 'ads/ads1.jpg');

    $curl = new Curl();
    echo $curl->Get($urlget, true, "token=12345");
    echo $curl->GetArray($url, $data, true);
    echo $curl->Post($url, $data, $files, true);
    echo $curl->PostJson($url, $data, true);
?>

Tệp php: api.php

<?php
    /*
    $Cookie = session_get_cookie_params();
    print_r($Cookie);
    */
    session_set_cookie_params(9000, '/', 'hostname.x', isset($_SERVER["HTTPS"]), true);
    session_start();

    $_SESSION['cnt']++;
    echo "Session count: " . $_SESSION['cnt']. "\r\n";
    echo $json = file_get_contents('php://input');
    $arr = json_decode($json, true);
    echo "<pre>";
    if(!empty($json)){ print_r($arr); }
    if(!empty($_GET)){ print_r($_GET); }
    if(!empty($_POST)){ print_r($_POST); }
    if(!empty($_FILES)){ print_r($_FILES); }
    // request headers
    print_r(getallheaders());
    print_r(apache_response_headers());
    // Fetch a list of headers to be sent.
    // print_r(headers_list());
?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.