30/09/2018, 22:26

Gọi cURL gián tiếp qua một hàm khác thì không chạy được?

Em có hàm POST request như sau:

function sendAPI($url, $data){
    $ch = curl_init($url);
    $jsonDataEncoded = $data;
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    if(!empty($input['entry'][0]['messaging'][0]['message'])){
        $result = curl_exec($ch);
    }
}

Rồi em gọi nó:
sendAPI($someUrl, $someData);
thì nó không chạy, còn em dùng trực tiếp:

    $ch = curl_init($someUrl);
    $jsonDataEncoded = $someData;
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    if(!empty($input['entry'][0]['messaging'][0]['message'])){
        $result = curl_exec($ch);
    }

thì nó lại chạy bình thường. Ai giúp em với ạ :((

Phạm Dũng viết 00:34 ngày 01/10/2018

function mà ko return thì sao xuất kết quả được bạn ??

function sendAPI($url, $data){


return $result;
}
$result = sendAPI($someUrl, $someData);
Phạm Sỹ Hưng viết 00:33 ngày 01/10/2018

Hàm không bắt buộc phải return mà bạn : http://stackoverflow.com/questions/7656685/does-php-functions-needs-return-any-value

Mình thử thêm cả return nhưng vẫn không chạy bạn ạ :((

Vô Thin viết 00:26 ngày 01/10/2018

Haha, cái này nhiều người cũng cóc biết tại sao, cách của chủ topic không chạy, nhưng này thì chạy:

function sendAPI(){
    $ch = curl_init('http://http://daynhauhoc.com/t/goi-curl-gian-tiep-qua-mot-ham-khac-thi-khong-chay-duoc/30896');
    $jsonDataEncoded = 'đa ta gì thì chơi luôn vào đây';
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    if(!empty($input['entry'][0]['messaging'][0]['message'])){
        $result = curl_exec($ch);
    }
}

sendAPI();

Còn không thì gọi cái này:

`curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);``

trước khi gọi các curl_xxx nào khác.

Phạm Sỹ Hưng viết 00:31 ngày 01/10/2018

À em fix được rồi ạ, do em chưa global cái $input @@ Cám ơn mọi người

Phạm Dũng viết 00:41 ngày 01/10/2018

Biến trong function là biến cục bộ mà bạn, cứ return cho lành =))

Phạm Sỹ Hưng viết 00:37 ngày 01/10/2018

Ok cám ơn bạn Mình sẽ lưu í

Bài liên quan
0