পিএইচপি-তে, আমি অনেক পিএইচপি প্রকল্পে সিআরএল শব্দটি দেখতে পাচ্ছি। এটা কি? এটা কিভাবে কাজ করে?
রেফারেন্স লিঙ্ক: সিআরএল
পিএইচপি-তে, আমি অনেক পিএইচপি প্রকল্পে সিআরএল শব্দটি দেখতে পাচ্ছি। এটা কি? এটা কিভাবে কাজ করে?
রেফারেন্স লিঙ্ক: সিআরএল
উত্তর:
সিআরএল একটি লাইব্রেরি যা আপনাকে পিএইচপি-তে 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/');
সিআরএল এটির মাধ্যমে এইচটিএমএল প্রতিক্রিয়া পেতে আপনি আপনার কোড থেকে কোনও URL টি হিট করতে পারেন। সিআরএল মানে ক্লায়েন্ট ইউআরএল যা আপনাকে অন্য URL এর সাথে সংযোগ স্থাপন করতে এবং তাদের কোডগুলিতে তাদের প্রতিক্রিয়াগুলি ব্যবহার করতে দেয়।
সারসংক্ষেপ:
curl_exec
পিএইচপি- র কমান্ডটি curl
কনসোল থেকে ব্যবহার করার জন্য একটি সেতু । কার্ল_এক্সেক দ্রুত এবং সহজেই জিইটি / পোষ্ট অনুরোধগুলি করা সহজ করে তোলে, জেএসএনের মতো অন্যান্য সার্ভারের প্রতিক্রিয়া গ্রহণ করে এবং ফাইল ডাউনলোড করে।
সতর্কতা, বিপদ:
curl
অকার্যকরভাবে ব্যবহার করা হলে এটি মন্দ এবং বিপজ্জনক কারণ এটি সেখান থেকে ইন্টারনেটে ডেটা প্রাপ্তি সম্পর্কে। কেউ আপনার কার্ল এবং অন্য সার্ভারের মধ্যে যেতে পারে rm -rf /
এবং আপনার প্রতিক্রিয়াতে একটি ইনজেকশন দিতে পারে , এবং তারপরে কেন আমাকে কনসোলে ফেলে দেওয়া হয়েছে এবং ls -l
এমনকি আর কাজও করা হচ্ছে না? কারণ আপনি কার্লের বিপজ্জনক শক্তিকে অবমূল্যায়ন করেছেন। আপনি নিজের সার্ভারের সাথে কথা বলছেন তা সত্ত্বেও কার্ল থেকে ফিরে আসা কোনও সুরক্ষাকেই বিশ্বাস করবেন না। আপনি তাদের সম্পদ বোকা উপশম করতে ম্যালওয়্যার পিছনে টানতে পারে।
এগুলি উবুন্টু 12.10 এ করা হয়েছিল
কমান্ডলাইন থেকে বেসিক কার্ল:
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
টক্সোপ্লাজমা গন্ডি বিকশিত গৌরবময় বিড়াল মহিলাদের বিড়ালকে চারপাশে রাখার জন্য এবং পুরুষরাও একইভাবে মহিলাকে চারপাশে রাখে।
সিআরএল উদাহরণ google.com হিট করার অনুরোধ পান, কমান্ডলাইনে প্রতিধ্বনি করুন:
এটি phpsh টার্মিনালের মাধ্যমে করা হয়:
php> $ch = curl_init();
php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
php> curl_exec($ch);
কনসোল করা এইচডিএমএল এবং জাভাস্ক্রিপ্টের (গুগল থেকে) কোনও মেস মুদ্রণ করে এবং ফেলে দেয়।
সিআরএল উদাহরণ প্রতিক্রিয়া পাঠ্যকে একটি ভেরিয়েবলের মধ্যে রাখে:
এটি 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;
চলকটিতে এখন বাইনারি রয়েছে যা একটি বিড়ালের অ্যানিমেটেড জিএফ, সম্ভাবনা অসীম।
কোনও পিএইচপি ফাইলের মধ্যে থেকে কার্ল করুন:
এই কোডটি 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 চার্জ পাবেন যা একটি বিদেশের ক্রেডিট কার্ড জালিয়াতির অপরাধের রিংয়ের সামনে।
সিআরএল এটির মাধ্যমে এইচটিএমএল প্রতিক্রিয়া পেতে আপনি আপনার কোড থেকে কোনও 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
প্রথমে আসুন কার্ল, libcurl এবং পিএইচপি / সিআরএল এর ধারণাটি বুঝতে পারি।
কার্ল : ইউআরএল সিনট্যাক্স ব্যবহার করে ফাইলগুলি পাওয়ার বা পাঠানোর জন্য একটি কমান্ড লাইন সরঞ্জাম।
libcurl : ড্যানিয়েল স্টেনবার্গের তৈরি একটি গ্রন্থাগার, যা আপনাকে বিভিন্ন প্রকারের বিভিন্ন প্রোটোকলের সাহায্যে বিভিন্ন ধরণের সার্ভারের সাথে সংযোগ স্থাপন এবং যোগাযোগের সুযোগ দেয়। libcurl বর্তমানে http, https, ftp, gopher, telnet, ڈک, ফাইল এবং ldap প্রোটোকল সমর্থন করে। libcurl এইচটিটিপিএস শংসাপত্র, এইচটিটিপি পোস্ট, এইচটিটিপি পুট, এফটিপি আপলোডিং (এটি পিএইচপি এর এফটিপি এক্সটেনশন দিয়েও করা যেতে পারে), এইচটিটিপি ফর্ম ভিত্তিক আপলোড, প্রক্সি, কুকিজ এবং ব্যবহারকারী + পাসওয়ার্ড প্রমাণীকরণ সমর্থন করে।
পিএইচপি / সিআরএল : পিএইচপি এর জন্য মডিউল যা পিএইচপি প্রোগ্রামগুলিকে 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 )
?>
পিএইচপি-তে সিআরএল এক্সটেনশানটি আপনাকে আপনার পিএইচপি স্ক্রিপ্ট থেকে বিভিন্ন ওয়েব সংস্থান ব্যবহার করার অনুমতি দেওয়ার জন্য ডিজাইন করা হয়েছে।
পিএইচপি-তে সিআরএল হ'ল পিএইচপি ভাষা থেকে কমান্ড লাইন সিআরএল ব্যবহার করার জন্য একটি সেতু
ডেনিয়েল স্টেনবার্গের তৈরি লাইব্রেরি, পিএইচপি লাইবকারলকে সমর্থন করে যা আপনাকে বিভিন্ন ধরণের সার্ভারের সাথে বিভিন্ন ধরণের প্রোটোকলের সাথে সংযোগ স্থাপন এবং যোগাযোগ করতে দেয়। 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);
}
কার্ল পিএইচপি-র একটি এক্সটেনশন ছাড়া কিছুই নয় যা সাধারণত কার্ল কমান্ড এবং লাইব্রেরি লিনাক্স / ইউনিক্স কমান্ড লাইন সরঞ্জামের জন্য মূলত লিখিত লাইব্রেরির আচরণের উত্তরাধিকার সূত্রে প্রাপ্ত
কার্ল কি? ক্লায়েন্ট ইউআরএল জন্য সিআরএল স্ট্যান্ড। সিআরএল কোনও ইউআরএল ডেটা প্রেরণে ব্যবহৃত হয়। কার্লটি আসলে কী তা সম্পর্কে আরও তথ্যের জন্য আপনি সিআরএল ওয়েবসাইটটি দেখতে পারেন
পিএইচপি-তে সিআরএল এখন পিএইচপি-তে একই ধারণাটি প্রবর্তন করা হয়েছে, বিভিন্ন প্রোটোকলের মাধ্যমে যেকোন অ্যাক্সেসযোগ্য ইউআরএলগুলিতে ডেটা প্রেরণের জন্য, উদাহরণস্বরূপ, HTTP বা FTP F আরও বিশদের জন্য, আপনি পিএইচপি কার্ল টিউটোরিয়াল পড়তে পারেন
পিএইচপি কার্ল ফাংশন (পোস্ট, জিইটি, ডিলেট, পুট)
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;
}
পিএইচপি কার্ল ক্লাস (জিইটি, পোস্ট, ফাইল আপলোড, সেশনস, পোস্ট জেএসন, ফোর্স সেল্ফাইএসএল এসএসএল / টিএলএস):
<?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());
?>