পিএইচপি-তে সিআরএল কী?


220

পিএইচপি-তে, আমি অনেক পিএইচপি প্রকল্পে সিআরএল শব্দটি দেখতে পাচ্ছি। এটা কি? এটা কিভাবে কাজ করে?

রেফারেন্স লিঙ্ক: সিআরএল



1
দয়া করে 2 টি লিঙ্কের নীচে চেক করুন, আমি মনে করি এটি আপনাকে সিআরএল কী তা বুঝতে সাহায্য করবে। phpsense.com/2007/php-curl-funifications blog.unitedheroes.net/curl
ধাওয়াল

উত্তর:


245

সিআরএল একটি লাইব্রেরি যা আপনাকে পিএইচপি-তে HTTP অনুরোধ করতে দেয়। এটি সম্পর্কে আপনার যা জানা দরকার (এবং বেশিরভাগ অন্যান্য এক্সটেনশানগুলি) পিএইচপি ম্যানুয়ালটিতে পাওয়া যেতে পারে ।

পিএইচপি এর সিআরএল ক্রিয়াকলাপগুলি ব্যবহার করার জন্য আপনাকে »libcurl প্যাকেজটি ইনস্টল করতে হবে। পিএইচপি-র প্রয়োজন আপনার লিব্কারল 7.০.২-বিটা বা উচ্চতর ব্যবহার করুন। পিএইচপি ৪.২.৩ এ আপনার লিবকরল সংস্করণ 7..৯.০ বা তার বেশি হবে। পিএইচপি ৪.৩.০ থেকে আপনার li.৯.৮ বা তারও বেশি উচ্চতর লাইবকার্ল সংস্করণ প্রয়োজন। পিএইচপি 5.0.0 এর জন্য একটি লাইবকার্ল সংস্করণ 7.10.5 বা তারও বেশি প্রয়োজন requires

আপনি সিআরএল ছাড়াই এইচটিটিপি অনুরোধ করতে পারেন, যদিও এটি allow_url_fopenআপনার php.iniফাইলে সক্ষম করা প্রয়োজন ।

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

1
@ জোহনেস, এইচটিটিপি পোস্টের অনুরোধগুলি কি সিআরএল ছাড়াই সম্ভব?
পেসারিয়ার

2
এর অর্থ, সার্ভারে যদি 'অনুমতি_url_fopen' সক্ষম না করা থাকে তবে আমরা ফাইল_জেট_কন্টেন্টস () ফাংশনটি ব্যবহার করতে পারি না, তবে সেই ক্ষেত্রে আমরা একই উদ্দেশ্যে কার্ল ফাংশনটি ব্যবহার করতে পারি? আমি কি সঠিক?
এআরুন

3
@ অরুন হ্যাঁ যদি 'অনুমতি_url_fopen' সক্ষম না করা হয় আপনি ফাইল_জেট_কন্টেন্টস () ফানকের পরিবর্তে একই টাস্কের জন্য কার্ল ব্যবহার করতে পারেন। কার্ল আপনাকে পোষ্ট ডেটা, কুকিজ ইত্যাদির মতো আরও বিকল্প সেট করতে সক্ষম করে যা ফাইল_জেট_কন্টেন্টস () সরবরাহ করে না।
দিনেশ নগর

157

সিআরএল এটির মাধ্যমে এইচটিএমএল প্রতিক্রিয়া পেতে আপনি আপনার কোড থেকে কোনও URL টি হিট করতে পারেন। সিআরএল মানে ক্লায়েন্ট ইউআরএল যা আপনাকে অন্য URL এর সাথে সংযোগ স্থাপন করতে এবং তাদের কোডগুলিতে তাদের প্রতিক্রিয়াগুলি ব্যবহার করতে দেয়।


3
জাভাস্ক্রিপ্টে এটি আপনার কোডটিতে অজ্যাক্সের মতোই। জাভাস্ক্রিপ্টে আপনি অযৌক্তিকভাবে করার সময় পিএইচপি সহ বিভিন্ন জিনিস আপনি একযোগে করেন ously
ফারিস রায়হান

68

পিএইচপি-তে সিআরএল:

সারসংক্ষেপ:

curl_execপিএইচপি- র কমান্ডটি curlকনসোল থেকে ব্যবহার করার জন্য একটি সেতু । কার্ল_এক্সেক দ্রুত এবং সহজেই জিইটি / পোষ্ট অনুরোধগুলি করা সহজ করে তোলে, জেএসএনের মতো অন্যান্য সার্ভারের প্রতিক্রিয়া গ্রহণ করে এবং ফাইল ডাউনলোড করে।

সতর্কতা, বিপদ:

curlঅকার্যকরভাবে ব্যবহার করা হলে এটি মন্দ এবং বিপজ্জনক কারণ এটি সেখান থেকে ইন্টারনেটে ডেটা প্রাপ্তি সম্পর্কে। কেউ আপনার কার্ল এবং অন্য সার্ভারের মধ্যে যেতে পারে rm -rf /এবং আপনার প্রতিক্রিয়াতে একটি ইনজেকশন দিতে পারে , এবং তারপরে কেন আমাকে কনসোলে ফেলে দেওয়া হয়েছে এবং ls -lএমনকি আর কাজও করা হচ্ছে না? কারণ আপনি কার্লের বিপজ্জনক শক্তিকে অবমূল্যায়ন করেছেন। আপনি নিজের সার্ভারের সাথে কথা বলছেন তা সত্ত্বেও কার্ল থেকে ফিরে আসা কোনও সুরক্ষাকেই বিশ্বাস করবেন না। আপনি তাদের সম্পদ বোকা উপশম করতে ম্যালওয়্যার পিছনে টানতে পারে।

উদাহরণ:

এগুলি উবুন্টু 12.10 এ করা হয়েছিল

  1. কমান্ডলাইন থেকে বেসিক কার্ল:

    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

    তারপরে আপনি ফায়ারফক্সে আপনার জিআইএফ খুলতে পারেন:

    firefox mycat.gif

    টক্সোপ্লাজমা গন্ডি বিকশিত গৌরবময় বিড়াল মহিলাদের বিড়ালকে চারপাশে রাখার জন্য এবং পুরুষরাও একইভাবে মহিলাকে চারপাশে রাখে।

  2. সিআরএল উদাহরণ google.com হিট করার অনুরোধ পান, কমান্ডলাইনে প্রতিধ্বনি করুন:

    এটি phpsh টার্মিনালের মাধ্যমে করা হয়:

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

    কনসোল করা এইচডিএমএল এবং জাভাস্ক্রিপ্টের (গুগল থেকে) কোনও মেস মুদ্রণ করে এবং ফেলে দেয়।

  3. সিআরএল উদাহরণ প্রতিক্রিয়া পাঠ্যকে একটি ভেরিয়েবলের মধ্যে রাখে:

    এটি 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;

    চলকটিতে এখন বাইনারি রয়েছে যা একটি বিড়ালের অ্যানিমেটেড জিএফ, সম্ভাবনা অসীম।

  4. কোনও পিএইচপি ফাইলের মধ্যে থেকে কার্ল করুন:

    এই কোডটি 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;
      }
    ?>

    তারপরে এটি কমান্ডলাইনের মাধ্যমে চালান:

    php < myphp.php

    আপনি myphp.php চালিয়েছেন এবং পিএইচপি ইন্টারপ্রেটারের মাধ্যমে সেই আদেশগুলি কার্যকর করেছেন এবং স্ক্রিনে এক টন অগোছালো এইচটিএমএল এবং জাভাস্ক্রিপ্ট ফেলে দিয়েছেন।

    আপনি কার্ল দিয়ে অনুরোধ করতে GETএবং POSTঅনুরোধ করতে পারেন , আপনি যা কিছু করেন তা এখানে বর্ণিত প্যারামিটারগুলি নির্দিষ্ট করে: HTTP কাজগুলি স্বয়ংক্রিয় করতে কার্ল ব্যবহার করে

বিপদের স্মারক:

চারপাশে ডাম্পিং কার্ল আউটপুট সম্পর্কে সতর্কতা অবলম্বন করুন, যদি এর কোনও ব্যাখ্যা ও সম্পাদন হয় তবে আপনার বাক্সটি মালিকানাধীন এবং আপনার ক্রেডিট কার্ডের তথ্য তৃতীয় পক্ষের কাছে বিক্রি হবে এবং আপনি আলাবামার এক-লোকের ফ্লোরিং সংস্থা থেকে একটি রহস্যজনক $ 900 চার্জ পাবেন যা একটি বিদেশের ক্রেডিট কার্ড জালিয়াতির অপরাধের রিংয়ের সামনে।


2
আপনি এখানে উল্লেখ করেছেন এমন 'বিপদ' সমর্থন করে একটি লিঙ্ক সরবরাহ করতে পারেন?
ভাসমান

1
@ ফ্লয়েটিংলোমাস যা বোঝাতে চেষ্টা করে যা এটি ব্যবহারকারীর দ্বারা সরবরাহিত সমস্ত সামগ্রীর সাথে উপস্থিত একটি সমস্যা: আপনি কারও উপর বিশ্বাস রাখতে পারবেন না। ব্যবহারকারী-সরবরাহিত সামগ্রী হিসাবে এটি আপনার অ্যাপ্লিকেশনটিতে দূষিত কোড ইনজেকশনের জন্য একটি সাধারণ এমআইটিএম ব্যবহার করে সিআরএল ব্যবহার করা সম্ভব। অবশ্যই এটি কেবল তখনই সমস্যা হয় যখন এরিকের সঠিকভাবে বলা হিসাবে এটি "ব্যাখ্যা এবং সম্পাদন" হয়ে যায়। কেবল evভালের জন্য অনুসন্ধান করা খারাপ এবং আপনি প্রচুর সম্ভাব্য সুরক্ষা ঝুঁকিগুলি খুঁজে পাবেন (যেমন: স্ট্যাকওভারফ্লো /
সেকশনস / 951373/when-

7
@ ফ্লয়েটিংলমাস ... এছাড়াও, এরিকের মনে হচ্ছে আলাবামার এক-লোকের ফ্লোরিং সংস্থাগুলি যে তাকে $ ৯০০ ডলার চার্জ করছে তার সম্পর্কে প্যারানাইয়া রয়েছে।
ফ্যাবিও পোলোনি

ইফ্রেমে ছাড়াও কি বিকল্প আছে?
জেনিফার মিশেল

1
তারা আপনাকে ফ্লোরিং বিক্রি করতে সত্যিই বাইরে থাকলে এটি প্যারানোইয়া নয়।
পাইয়ার্সব

24

সিআরএল এটির মাধ্যমে এইচটিএমএল প্রতিক্রিয়া পেতে আপনি আপনার কোড থেকে কোনও URL টি হিট করতে পারেন। এটি পিএইচপি ভাষা থেকে কমান্ড লাইন সিআরএল জন্য ব্যবহৃত হয়।

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

পদক্ষেপ 1: ব্যবহার করে কার্ল সেশন শুরু করুন curl_init()

পদক্ষেপ 2: জন্য বিকল্প সেট CURLOPT_URL। এই মানটি হল URL টি যা আমরা অনুরোধটি প্রেরণ করছি। curlপরামিতি ব্যবহার করে একটি অনুসন্ধান শব্দ যুক্ত করুন q=। জন্য বিকল্প সেট করুন CURLOPT_RETURNTRANSFER। সত্যটি কার্লকে মুদ্রণের পরিবর্তে স্ট্রিংটি ফিরে আসতে বলবে। এর জন্য বিকল্প বিকল্প সেট করুন CURLOPT_HEADER, মিথ্যাটি কার্লকে রিটার্ন মানটিতে শিরোলেখটিকে উপেক্ষা করতে বলবে।

পদক্ষেপ 3: কার্ল সেশনটি ব্যবহার করে কার্যকর করুন curl_exec()

পদক্ষেপ 4: আমরা তৈরি কার্ল সেশনটি বন্ধ করুন।

পদক্ষেপ 5: রিটার্ন স্ট্রিং আউটপুট।

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

এটি প্রমাণীকরণের জন্যও ব্যবহৃত হয়। প্রমাণীকরণের জন্য আমরা ব্যবহারকারীর নাম এবং পাসওয়ার্ডও সেট করতে পারি।

আরও কার্যকারিতা জন্য, ব্যবহারকারী ম্যানুয়াল বা নিম্নলিখিত টিউটোরিয়াল দেখুন:

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


16

প্রথমে আসুন কার্ল, libcurl এবং পিএইচপি / সিআরএল এর ধারণাটি বুঝতে পারি।

  1. কার্ল : ইউআরএল সিনট্যাক্স ব্যবহার করে ফাইলগুলি পাওয়ার বা পাঠানোর জন্য একটি কমান্ড লাইন সরঞ্জাম।

  2. libcurl : ড্যানিয়েল স্টেনবার্গের তৈরি একটি গ্রন্থাগার, যা আপনাকে বিভিন্ন প্রকারের বিভিন্ন প্রোটোকলের সাহায্যে বিভিন্ন ধরণের সার্ভারের সাথে সংযোগ স্থাপন এবং যোগাযোগের সুযোগ দেয়। libcurl বর্তমানে http, https, ftp, gopher, telnet, ڈک, ফাইল এবং ldap প্রোটোকল সমর্থন করে। libcurl এইচটিটিপিএস শংসাপত্র, এইচটিটিপি পোস্ট, এইচটিটিপি পুট, এফটিপি আপলোডিং (এটি পিএইচপি এর এফটিপি এক্সটেনশন দিয়েও করা যেতে পারে), এইচটিটিপি ফর্ম ভিত্তিক আপলোড, প্রক্সি, কুকিজ এবং ব্যবহারকারী + পাসওয়ার্ড প্রমাণীকরণ সমর্থন করে।

  3. পিএইচপি / সিআরএল : পিএইচপি এর জন্য মডিউল যা পিএইচপি প্রোগ্রামগুলিকে libcurl ব্যবহার করা সম্ভব করে।

এটি কিভাবে ব্যবহার করতে:

পদক্ষেপ 1 : কার্ল_ইনিট () ব্যবহার করে কার্ল সেশনটি শুরু করুন।

Step2 : CURLOPT_URL সেট বিকল্প। এই মানটি হ'ল ইউআরএল যা আমরা অনুরোধটি প্রেরণ করছি। "কিউ =" প্যারামিটার ব্যবহার করে একটি অনুসন্ধান শব্দ "কার্ল" প্রয়োগ করুন C CURLOPT_REmittedTRANSFER সেট করুন বিকল্পটি, সত্যটি কার্লকে প্রিন্টের পরিবর্তে স্ট্রিংটি ফিরে আসতে বলবে। CURLOPT_HEADER এর জন্য বিকল্প সেট সেট করুন, মিথ্যা কার্লকে রিটার্ন মানটিতে শিরোলেখটিকে উপেক্ষা করতে বলবে।

স্টিপি 3 : কার্ল_এক্সেক () ব্যবহার করে কার্ল সেশনটি কার্যকর করুন।

পদক্ষেপ 4 : আমরা তৈরি কার্ল সেশনটি বন্ধ করুন।

পদক্ষেপ 5 : রিটার্ন স্ট্রিং আউটপুট।

ডেমো করুন :

আপনাকে দুটি পিএইচপি ফাইল তৈরি করতে হবে এবং এগুলিকে এমন একটি ফোল্ডারে স্থাপন করতে হবে যা থেকে আপনার ওয়েব সার্ভার পিএইচপি ফাইলগুলি পরিবেশন করতে পারে। আমার ক্ষেত্রে আমি এগুলিকে সরলতার জন্য / var / www / এ রেখেছি।

1. Helloservice.php এবং 2. ডেমো.এফপি

Helloservice.php খুব সহজ এবং মূলত এটি যে কোনও ডেটা পায় তা প্রতিধ্বনি করে:

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

2.demo.php পৃষ্ঠা, আপনি ফলাফল দেখতে পারেন:

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

হাই, দয়া করে আমাকে পৃষ্ঠা সম্পর্কে 1. ব্যবহার-curl.php জানিয়ে দেবে
Kaveh

@ কাভেঃ দুঃখিত, আমি দ্বিতীয় পৃষ্ঠাটি ভুলে গেছি। আপডেট উত্তর। এখন চেক করুন।
আনন্দ পান্ডে

12

পিএইচপি-তে সিআরএল এক্সটেনশানটি আপনাকে আপনার পিএইচপি স্ক্রিপ্ট থেকে বিভিন্ন ওয়েব সংস্থান ব্যবহার করার অনুমতি দেওয়ার জন্য ডিজাইন করা হয়েছে।



7

কার্ল

  • সিআরএল এটির মাধ্যমে এইচটিএমএল প্রতিক্রিয়া পেতে আপনি আপনার কোড থেকে কোনও URL টি হিট করতে পারেন।
  • এটি পিএইচপি ভাষা থেকে কমান্ড লাইন সিআরএল জন্য ব্যবহৃত হয়।
  • সিআরএল একটি লাইব্রেরি যা আপনাকে পিএইচপি-তে HTTP অনুরোধ করতে দেয়।

ডেনিয়েল স্টেনবার্গের তৈরি লাইব্রেরি, পিএইচপি লাইবকারলকে সমর্থন করে যা আপনাকে বিভিন্ন ধরণের সার্ভারের সাথে বিভিন্ন ধরণের প্রোটোকলের সাথে সংযোগ স্থাপন এবং যোগাযোগ করতে দেয়। libcurl বর্তমানে http, https, ftp, gopher, telnet, ڈک, ফাইল এবং ldap প্রোটোকল সমর্থন করে। libcurl এইচটিটিপিএস শংসাপত্র, এইচটিটিপি পোস্ট, এইচটিটিপি পুট, এফটিপি আপলোডিং (এটি পিএইচপি এর এফটিপি এক্সটেনশন দিয়েও করা যেতে পারে), এইচটিটিপি ফর্ম ভিত্তিক আপলোড, প্রক্সি, কুকিজ এবং ব্যবহারকারী + পাসওয়ার্ড প্রমাণীকরণ সমর্থন করে।

একবার আপনি পিএইচপি সঙ্কলন করে সিআরএল সমর্থন দিয়ে, আপনি সিআরএল ফাংশন ব্যবহার শুরু করতে পারেন। সিআরএল ফাংশনগুলির মূল ধারণাটি হ'ল আপনি কার্ল_ইনিট () ব্যবহার করে একটি সিআরএল সেশন শুরু করুন, তারপরে আপনি curl_setopt () এর মাধ্যমে স্থানান্তরের জন্য আপনার সমস্ত বিকল্প সেট করতে পারেন, তারপরে আপনি curl_exec () দিয়ে সেশনটি কার্যকর করতে পারেন এবং তারপরে আপনি curl_close () ব্যবহার করে আপনার সেশনটি শেষ করুন।

কোডের উদাহরণ

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

আরও তথ্যের জন্য, দয়া করে চেক করুন -


1

কার্ল পিএইচপি-র একটি এক্সটেনশন ছাড়া কিছুই নয় যা সাধারণত কার্ল কমান্ড এবং লাইব্রেরি লিনাক্স / ইউনিক্স কমান্ড লাইন সরঞ্জামের জন্য মূলত লিখিত লাইব্রেরির আচরণের উত্তরাধিকার সূত্রে প্রাপ্ত

কার্ল কি? ক্লায়েন্ট ইউআরএল জন্য সিআরএল স্ট্যান্ড। সিআরএল কোনও ইউআরএল ডেটা প্রেরণে ব্যবহৃত হয়। কার্লটি আসলে কী তা সম্পর্কে আরও তথ্যের জন্য আপনি সিআরএল ওয়েবসাইটটি দেখতে পারেন

পিএইচপি-তে সিআরএল এখন পিএইচপি-তে একই ধারণাটি প্রবর্তন করা হয়েছে, বিভিন্ন প্রোটোকলের মাধ্যমে যেকোন অ্যাক্সেসযোগ্য ইউআরএলগুলিতে ডেটা প্রেরণের জন্য, উদাহরণস্বরূপ, HTTP বা FTP F আরও বিশদের জন্য, আপনি পিএইচপি কার্ল টিউটোরিয়াল পড়তে পারেন


1

পিএইচপি কার্ল ফাংশন (পোস্ট, জিইটি, ডিলেট, পুট)

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

পিএইচপি কার্ল ক্লাস (জিইটি, পোস্ট, ফাইল আপলোড, সেশনস, পোস্ট জেএসন, ফোর্স সেল্ফাইএসএল এসএসএল / টিএলএস):

<?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;
            } 
        }
    }
?>

উদাহরণ:

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

পিএইচপি ফাইল: 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());
?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.