প্রথাগত
// set post fields
$post = [
'username' => 'user1',
'password' => 'passuser1',
'gender' => 1,
];
$ch = curl_init('http://www.example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
// execute!
$response = curl_exec($ch);
// close the connection, release resources used
curl_close($ch);
// do anything you want with your response
var_dump($response);
অবজেক্ট ওরিয়েন্টেড
<?php
// mutatis mutandis
namespace MyApp\Http;
class CurlPost
{
private $url;
private $options;
/**
* @param string $url Request URL
* @param array $options cURL options
*/
public function __construct($url, array $options = [])
{
$this->url = $url;
$this->options = $options;
}
/**
* Get the response
* @return string
* @throws \RuntimeException On cURL error
*/
public function __invoke(array $post)
{
$ch = curl_init($this->url);
foreach ($this->options as $key => $val) {
curl_setopt($ch, $key, $val);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);
$error = curl_error($ch);
$errno = curl_errno($ch);
if (is_resource($ch)) {
curl_close($ch);
}
if (0 !== $errno) {
throw new \RuntimeException($error, $errno);
}
return $response;
}
}
ব্যবহার
// create curl object
$curl = new \MyApp\Http\CurlPost('http://www.example.com');
try {
// execute the request
echo $curl([
'username' => 'user1',
'password' => 'passuser1',
'gender' => 1,
]);
} catch (\RuntimeException $ex) {
// catch errors
die(sprintf('Http error %s with code %d', $ex->getMessage(), $ex->getCode()));
}
পার্শ্ব নোট এখানে: পদ্ধতির AdapterInterface
সাথে উদাহরণস্বরূপ বলা হয় এমন কিছু ধরণের ইন্টারফেস তৈরি করা ভাল getResponse()
এবং সর্বোপরি শ্রেণিটি এটি প্রয়োগ করতে দেয়। তারপরে আপনি নিজের প্রয়োগের কোনও পার্শ্ব প্রতিক্রিয়া ছাড়াই সর্বদা আপনার পছন্দসই আরেকটি অ্যাডাপ্টারের সাথে এই প্রয়োগটি অদলবদল করতে পারেন।
HTTPS ব্যবহার / ট্রাফিক এনক্রিপ্ট করা
সাধারণত উইন্ডোজ অপারেটিং সিস্টেমের অধীনে পিএইচপি-তে সিআরএল নিয়ে সমস্যা হয়। একটি https সুরক্ষিত শেষ পয়েন্টের সাথে সংযোগ দেওয়ার চেষ্টা করার সময়, আপনাকে এটি বলতে একটি ত্রুটি পাবেন certificate verify failed
।
বেশিরভাগ লোকেরা এখানে যা করেন তা হ'ল সিআরএল লাইব্রেরিটি শংসাপত্রের ত্রুটিগুলি উপেক্ষা করার জন্য এবং ( curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
) চালিয়ে যেতে বলা । যেহেতু এটি আপনার কোডটিকে কাজ করবে, আপনি বিশাল সুরক্ষা গর্ত প্রবর্তন করুন এবং দূষিত ব্যবহারকারীদের আপনার অ্যাপ্লিকেশনটিতে ম্যান ইন দ্য মিডল আক্রমণ বা এর মতো বিভিন্ন আক্রমণ করতে সক্ষম করে enable
কখনই না, কখনই না। পরিবর্তে, আপনাকে কেবল নিজের সংশোধন করতে হবে php.ini
এবং পিএইচপি বলতে হবে আপনার CA Certificate
ফাইলটি এটি কোথায় শংসাপত্রগুলি সঠিকভাবে যাচাই করতে দেয়:
; modify the absolute path to the cacert.pem file
curl.cainfo=c:\php\cacert.pem
সর্বশেষতমটি cacert.pem
ইন্টারনেট থেকে ডাউনলোড করা বা আপনার প্রিয় ব্রাউজার থেকে নেওয়া যেতে পারে । কোনও php.ini
সম্পর্কিত সেটিংস পরিবর্তন করার সময় আপনার ওয়েব সার্ভারটি পুনরায় চালু করতে ভুলবেন না।
http_build_query()
পরামিতিগুলি হ্যান্ডেল করার জন্য কোনও প্রয়োজন নেই ; শুধু অ্যারে পাসCURLOPT_POSTFIELDS
যথেষ্ট।