সিআরএল সহ $ _POST মানগুলি পাস করা


উত্তর:


168

ভাল কাজ করা উচিত।

$data = array('name' => 'Ross', 'php_master' => true);

// You can POST a file by prefixing with an @ (for <input type="file"> fields)
$data['file'] = '@/home/user/world.jpg';

$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
curl_exec($handle);
curl_close($handle)

আমাদের এখানে দুটি বিকল্প রয়েছে, CURLOPT_POSTযা HTTP পোষ্ট চালু করে, এবং CURLOPT_POSTFIELDSযা জমা দেওয়ার জন্য আমাদের পোস্ট ডেটার একটি অ্যারে ধারণ করে। এটি ডেটা জমা দেওয়ার জন্য ব্যবহার করা যেতে পারে POST <form>


এটি লক্ষ্য করা গুরুত্বপূর্ণ যে curl_setopt($handle, CURLOPT_POSTFIELDS, $data);two ডেটা দুটি ফর্ম্যাটে নিয়ে যায় এবং এটি পোস্ট ডেটা কীভাবে এনকোড হবে তা নির্ধারণ করে।

  1. $dataহিসাবে হিসাবে array(): ডেটা multipart/form-dataএমনভাবে প্রেরণ করা হবে যা সার্ভারের দ্বারা সর্বদা গৃহীত হয় না।

    $data = array('name' => 'Ross', 'php_master' => true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
    
  2. $dataইউআরএল এনকোডড স্ট্রিং হিসাবে: ডেটা হিসাবে প্রেরণ করা হবে application/x-www-form-urlencoded, যা জমা দেওয়া এইচটিএমএল ফর্ম ডেটার জন্য ডিফল্ট এনকোডিং।

    $data = array('name' => 'Ross', 'php_master' => true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
    

আমি আশা করি এটি অন্যকে তাদের সময় বাঁচাতে সহায়তা করবে।

দেখা:


আপনার নোটটি আমাকে কমপক্ষে এক ঘন্টা ডিবাগ করার সময় বাঁচিয়েছে। ধন্যবাদ
বিবেক কুমার

30

কোনও ইউআরএলে স্বাভাবিক প্যারামিটার / মান বিন্যাস পোস্ট করার জন্য রসের সঠিক ধারণা রয়েছে

আমি সম্প্রতি এমন পরিস্থিতিতে ছুঁড়েছি যেখানে কোনও প্যারামিটার জোড় ছাড়াই কন্টেন্ট-টাইপ "টেক্সট / এক্সএমএল" হিসাবে কিছু এক্সএমএল পোস্ট করার দরকার হয়েছিল তাই আপনি এখানে কীভাবে করেন তা এখানে:

$xml = '<?xml version="1.0"?><stuff><child>foo</child><child>bar</child></stuff>';
$httpRequest = curl_init();

curl_setopt($httpRequest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($httpRequest, CURLOPT_HTTPHEADER, array("Content-Type:  text/xml"));
curl_setopt($httpRequest, CURLOPT_POST, 1);
curl_setopt($httpRequest, CURLOPT_HEADER, 1);

curl_setopt($httpRequest, CURLOPT_URL, $url);
curl_setopt($httpRequest, CURLOPT_POSTFIELDS, $xml);

$returnHeader = curl_exec($httpRequest);
curl_close($httpRequest);

আমার ক্ষেত্রে, HTTP রেসপন্স শিরোনামের বাইরে আমার কিছু মান পার্স করা দরকার যাতে আপনার অগত্যা সেট করার প্রয়োজন হয় না CURLOPT_RETURNTRANSFERবা CURLOPT_HEADER


4
পোস্টারটি যা জিজ্ঞাসা করছে এটি এটি নয়, তবে ঠিক এটিই ঘটেছে যা আমি খুঁজছিলাম, ধন্যবাদ!
ডেভর

আমি খুশি যে অন্য কেউ এটির সহায়ক বলে মনে করেছে।
মার্ক বাইক

4
আপনার "কার্ল_সেটপ্ট ($ httpRequest, CURLOPT_HTTPHEADER, অ্যারে (" বিষয়বস্তুর ধরণ: পাঠ্য / এক্সএমএল ")))" এমন কিছু সমাধান করেছেন যা আমাকে ইতিমধ্যে কয়েক ঘন্টা সময় নিয়েছে! অনেক অনেক ধন্যবাদ :)
আলেক্সি টেনিটস্কি

হাই মার্ক, আপনার যদি সময় থাকে তবে আপনি কি আমাকে সাহায্য করতে পারেন? .. দয়া করে। এখানে ক্লিক করুন
jayAnn

Urlncoded হিসাবে প্রেরণ করার সময় কেন আমার xML ডেটা গ্রহণ করা হয়নি তা নির্ধারণের চেষ্টা করে আমাদের ব্যয় করে। সামগ্রী-প্রকার এবং কোনও ইউরেনকোড আমাকে বাঁচায় না। ধন্যবাদ
স্যামুয়েল

3
$query_string = "";

if ($_POST) {
    $kv = array();
    foreach ($_POST as $key => $value) {
        $kv[] = stripslashes($key) . "=" . stripslashes($value);
    }
    $query_string = join("&", $kv);
}

if (!function_exists('curl_init')){
    die('Sorry cURL is not installed!');
}

$url = 'https://www.abcd.com/servlet/';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($kv));
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);

curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$result = curl_exec($ch);

curl_close($ch);

3

সিআরএল ব্যবহারের আর একটি সাধারণ পিএইচপি উদাহরণ:

<?php
    $ch = curl_init();                    // Initiate cURL
    $url = "http://www.somesite.com/curl_example.php"; // Where you want to post data
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_POST, true);  // Tell cURL you want to post something
    curl_setopt($ch, CURLOPT_POSTFIELDS, "var1=value1&var2=value2&var_n=value_n"); // Define what you want to post
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return the output in string format
    $output = curl_exec ($ch); // Execute

    curl_close ($ch); // Close cURL handle

    var_dump($output); // Show output
?>

উদাহরণ এখানে পাওয়া গেছে: http://devzone.co.in/post-data-using-curl-in-php-a-simple-example/

পরিবর্তে curl_setoptআপনি ব্যবহার করতে পারেন curl_setopt_array

http://php.net/manual/en/function.curl-setopt-array.php


ধন্যবাদ!! - আপনার কোডটি curl_setopt($ch, CURLOPT_POSTFIELDS, "var1=value1&var2=value2&var_n=value_n"); // Define what you want to postআমাকে যা সরবরাহ করছিল তা আমাকে সরবরাহ করেছিল :)
asugrue15

2

এটি কীভাবে করবেন তার উদাহরণ রয়েছে যা এই পৃষ্ঠাতে দেখুন ।


4
যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
Nanne


1
$url='Your url'; // Specify your url
$data= array('parameterkey1'=>value,'parameterkey2'=>value); // Add parameters in key value
$ch = curl_init(); // Initialize cURL
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);

4
আপনি এই উত্তরটি প্রসারিত করতে পারেন? কয়েক লাইনের কোড উত্তর দেয় না।
ধনী বেনার

1) আপনার ইউআরএল সুনির্দিষ্ট করুন 2) প্যারামিটারের অ্যারে তৈরি করুন 3) কার্ল শুরু করুন 4) কার্লের প্রয়োজনীয় অপশন সেট করুন 5) কার্ল এক্সিকিউট করুন 6) বন্ধ কার্ল
অনিকেত বি

0
<?php
    function executeCurl($arrOptions) {

        $mixCH = curl_init();

        foreach ($arrOptions as $strCurlOpt => $mixCurlOptValue) {
            curl_setopt($mixCH, $strCurlOpt, $mixCurlOptValue);
        }

        $mixResponse = curl_exec($mixCH);
        curl_close($mixCH);
        return $mixResponse;
    }

    // If any HTTP authentication is needed.
    $username = 'http-auth-username';
    $password = 'http-auth-password';

    $requestType = 'POST'; // This can be PUT or POST

    // This is a sample array. You can use $arrPostData = $_POST
    $arrPostData = array(
        'key1'  => 'value-1-for-k1y-1',
        'key2'  => 'value-2-for-key-2',
        'key3'  => array(
                'key31'   => 'value-for-key-3-1',
                'key32'   => array(
                    'key321' => 'value-for-key321'
                )
        ),
        'key4'  => array(
            'key'   => 'value'
        )
    );

    // You can set your post data
    $postData = http_build_query($arrPostData); // Raw PHP array

    $postData = json_encode($arrPostData); // Only USE this when request JSON data.

    $mixResponse = executeCurl(array(
        CURLOPT_URL => 'http://whatever-your-request-url.com/xyz/yii',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPGET => true,
        CURLOPT_VERBOSE => true,
        CURLOPT_AUTOREFERER => true,
        CURLOPT_CUSTOMREQUEST => $requestType,
        CURLOPT_POSTFIELDS  => $postData,
        CURLOPT_HTTPHEADER  => array(
            "X-HTTP-Method-Override: " . $requestType,
            'Content-Type: application/json', // Only USE this when requesting JSON data
        ),

        // If HTTP authentication is required, use the below lines.
        CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
        CURLOPT_USERPWD  => $username. ':' . $password
    ));

    // $mixResponse contains your server response.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.