2008-08-26 23 views
87

के साथ $ _POST मूल्यों को पास करना cURL का उपयोग करके आप किसी पृष्ठ पर $_POST मान कैसे पास करते हैं?कर्ल

उत्तर

159

ठीक काम करना चाहिए।

$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 POST बदल जाता है, और CURLOPT_POSTFIELDS जो प्रस्तुत करने के लिए हमारे पोस्ट डेटा की एक सरणी शामिल है। इसका उपयोग POST<form> एस पर डेटा सबमिट करने के लिए किया जा सकता है।


यह ध्यान रखें कि curl_setopt($handle, CURLOPT_POSTFIELDS, $data); दो प्रारूपों में $ डेटा लेता है, और यह तय करता है कि पोस्ट डेटा इनकोडिंग किया जाएगा महत्वपूर्ण है।

  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)); 
    

मुझे आशा है कि यह मदद मिलेगी दूसरों को उनके समय की बचत।

देखें:

2

चेक बाहर this page जो इसे कैसे करना का एक उदाहरण है।

+2

इस जबकि सैद्धांतिक रूप से सवाल है, [यह बेहतर होगा] का जवाब कर सकते हैं (http://meta.stackexchange.com/q/8259) जवाब के आवश्यक हिस्से को यहां शामिल करने, और संदर्भ के लिए लिंक प्रदान करते हैं। – Nanne

28

Ross has the right idea एक यूआरएल के सामान्य पैरामीटर/मूल्य प्रारूप को पोस्ट करने के लिए।

मैं हाल ही में एक स्थिति है जहाँ मैं किसी भी पैरामीटर जोड़े इसलिए यहाँ के बिना के रूप में सामग्री प्रकार "text/xml" कुछ Xml पोस्ट करने के लिए आवश्यक में भाग गया है कि कैसे आप ऐसा कर:

$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 सेट करने की आवश्यकता नहीं हो सकती है।

+1

यह पोस्टर नहीं पूछ रहा है, लेकिन यह वही होता है जो मैं ढूंढ रहा था, धन्यवाद! – davr

+0

मुझे खुशी है कि किसी और को यह उपयोगी लगता है। –

+1

आपके "curl_setopt ($ httpRequest, CURLOPT_HTTPHEADER, सरणी (" सामग्री-प्रकार: टेक्स्ट/एक्सएमएल "));" कुछ हल किया जो मुझे पहले से ही कुछ घंटे ले गया! बहुत बहुत धन्यवाद :) –

1

cUrl PHP documentation page देखें। यह उदाहरण स्क्रिप्ट के साथ बस बहुत अधिक मदद करेगा।

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); 
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. 
3

cURL उपयोग का एक और सरल पीएचपी उदाहरण: इसके बजाय curl_setopt का उपयोग कर आप curl_setopt_array उपयोग कर सकते हैं की http://devzone.co.in/post-data-using-curl-in-php-a-simple-example/

:

<?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://php.net/manual/en/function.curl-setopt-array.php

+0

धन्यवाद !! - आपका कोड 'curl_setopt ($ ch, CURLOPT_POSTFIELDS," var1 = value1 और var2 = value2 और var_n = value_n "); // परिभाषित करें कि आप क्या पोस्ट करना चाहते हैं 'जो मुझे ढूंढ रहा था उसके साथ प्रदान किया गया :) – asugrue15

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); 
+1

क्या आप इस उत्तर पर विस्तार कर सकते हैं? कोड की कुछ पंक्तियां उत्तर नहीं देती हैं। –

+0

1) यूआरएल –

+0

निर्दिष्ट करें 1) अपना यूआरएल निर्दिष्ट करें 2) पैरामीटर की सरणी बनाएं 3) कर्ल शुरू करें 4) सेट कर्ल के आवश्यक विकल्प 5) कर्ल निष्पादित करें 6) कर्ल बंद करें –