تعداد بازدید: 5495

افزونه CURL در PHP

برای ایجاد یک درخواست راه های متفاوتی وجود دارد. اگر درخواست از نوع GET باشد راه های ساده تری نظیر تابع file_get_content و یا افزونه DOM می باشد. برای ارسال درخواست از انواع دیگر متد ها مثل POST می توان از افزونه CURL استفاده کرد.

فرم ها نیز ابزارهایی جهت ارسال درخواست با پارامتر های خاص ( فیلد های فرم ) به یک آدرس خاص ( پارامتر action ) و با یک متد خاص ( پارامتر method ) می باشد. در حقیقت وقتی یک فرم را ارسال می کنیم از طریق متد ( method ) به یک url خاص ( action ) یک درخواست ارسال می کنیم. در این درخواست یک سری داده را نیز ارسال می کنیم ( همان مقادیر فیلد های فرم ) . در نوع درخواست به وسیله فرم کاربر نیز همراه با درخواست به وب سرویس می رود. سرعت پاسخ در curl نیز بسیار بالاتر از تابع file_get_content می باشد.

از طریق Ajax نیز می توان یک درخواست به سرور راه دور ارسال کرد. پروسه Ajax نیز یک درخواست با یک متد خاص به یک سرور به همراه پارامتر هایی می باشد.

Client URL Request Library

اگر قرار باشد از طریق یک پروتکل خاص (http,https) و هر یک از متد ها (GET , POST) به یک سرور درخواست ارسال کنیم و همچنین در طی ارسال درخواست پارامتر هایی نیز در همان متد ارسال کنیم از کتابخانه CURL استفاده می کنیم.

curl یک افزونه با زبان C می باشد که می تواند بر اساس تمامی متد های Http نظیر GET , POST , PUT , DELETE بر پایه پروتکل های اینترنتی مانند Http , Https , FTP, SMTP درخواست ارسال کند.

از افزونه curl برای کار با وب سرویس ها ( ارسال درخواست و دریافت پاسخ ) مانند سیستم پرداخت های آنلاین و ارسال پیامک یا لاگین از طریق سرویس دیگر ، خزنده های وب web crowler و یا ارسال اطلاعات یک فرم بدون ارسال کاربر به سرور مقصد و دریافت پاسخ استفاده می شود.

مراحل استفاده از افزونه curl برای ارسال درخواست:

  • راه اندازی با استفاده از دستور curl_init
  • تنظیمات آپشن ها با استفاده از curl_setopt
  • اجرای درخواست با دستور curl_exec
  • بستن curl با استفاده از curl_close

مثال زیر یک درخواست به گوگل ارسال می کند :

$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,"https://www.google.com/search?q=site:gnutec.net");
curl_setopt($curl,CURLOPT_HEADER,FALSE);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
$output = curl_exec($curl);
curl_close($curl);

مرحله curl_setopt مهم ترین مرحله در ارسال درخواست از طریق curl می باشد. یک سری option ها برای این دستور موجود می باشد که هر یک کاربرد خاص خود را دارد.

CURLOPT_URL : آدرس URL که قرار است بهش متصل بشیم یا همان آدرس سرور مقصد که قراره درخواست ما را پاسخ دهد.

CURLOPT_RETURNTRANSFER : این که پاسخ درخواست را مستقیما چاپ کند یا بر گرداند. اگر مقدار true باشد پاسخ را بر می گرداند و اگر برابر با false باشد پاسخ را چاپ می کند.

CURLOPT_TIMEOUT : حداکثر زمان منتظر ماندن برای پاسخ به ثانیه.

CURLOPT_POST : در صورتی که بخواهیم درخواست با متد POST ارسال شود این مقدارد برابر با true قرار می گیرد.

CURLOPT_POSTFIELDS : متغیر هایی که باید از طریق POST ارسال شوند را باید از این طریق SET کرد. ( به صورت آرایه یا به صورت رشته متغیر هایی که با & از هم جدا شده اند )

$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$fields_string = "name=abolfazl&famil=sabagh";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);

مثال : یک تابع برای اجرای یک درخواست به سرور درخواست که یک url می گیرد و یک آرایه پارامتر های متد POST می باشد را از این لینک می توانید پیدا کنید.

نکته : برای ارسال پارامتر به صورت آرایه باید از تابع http_build_query استفاده کنیم. نمونه یک تابع که این درخواست را به همراه پارامتر های آن به صورت آرایه ارسال می کند می توانید مشاهده کنید. اگر پارامتری برای CURLOPT_POSTFIELDS ست نکنید درخواست شما در فعل get ارسال می گردد.

CURLOPT_HEADER : اگر این مقدار برابر با false باشد به این معنی است که هیچ هدری ست نمی شود. در درخواست های ساده این مقدار را ست می کنیم. به صورت پیش فرض این پارامتر برابر با true می باشد.

CURLOPT_SSL_VERIFYPEER : در صورتی که برابر با false باشد SSL Verification نیاز ندارد. به صورت پیش فرض این پارامتر برابر با false می باشد.

CURLOPT_HTTPHEADER : در صورت نیاز با استفاده از این آپشن می توانید http header ست کنید در درخواست خودتان :

curl_setopt($cURL,CURLOPT_HTTPHEADER,array (
	"Content-Type: text/xml; charset=utf-8",
));

CURLOPT_FILE : این پارامتر برابر با handler فایلی است که قرار است از طریق curl از سرور مقصد در سرور مبدا نوشته شود ( به اصطلاح عامیانه دانلود شود ) برای فهم بیشتر این مثال را مشاهده کنید.

CURLOPT_COOKIEFILE : مسیر فایلی که قرار است به عنوان کوکی ارسال شود را مشخص می کند.

CURLOPT_COOKIEJAR : محل ذخیره شدن کوکی های دریافت شده در پاسخ را مشخص می کند.

نکته : از طریق دستور زیر در محیط command line در صورتی که curl را روی سیستم عامل خود نصب کرده باشید می توانید درخواست ارسال کنید و خروجی دریافت کنید :

curl -i -H <header> <url>
curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource

نکته : با استفاده از افزونه curljson می توانید خروجی های json حاصل از پاسخ را به صورت مرتب (beautify) نمایش دهید. باید آن را روی سیستم عامل خود نصب داشته باشید و آن را به محیط command line معرفی کرده باشد.

نکته : در وردپرس نیازی به استفاده مستقیم از curl ندارید و توابع wp_remote_get برای درخواست هایی از نوع GET (ارسال درخواست و تنها دریافت داده از پاسخ سرور) و تابع wp_remote_post برای درخواست هایی از نوع POST (ایجاد درخواست و تغییر در سرور و دریافت پاسخ تغییر) داریم.

 

مطالب مشابه

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Rest API در وردپرس

سرور ها می توانند پاسخ مناسب به درخواست ها بدهند. درخواست ها و پاسخ یک سری ویژگی ها و داده همراه خود دارند. کدی که در...

ساخت REST API با PHP

API (Application Program Interface) یعنی یک واسط برای استفاده از امکانات نرم افزار. واسط های گرافیکی نرم افزار رو هم می...

هدر های Http در درخواست و پاسخ

Http Headers (قسمت دوم)

http headers حاوی اطلاعاتی در رابطه با نوع درخواست ما می باشند. همچنین یک نوع رابط میان درخواست کلاینت و پاسخ سرور در...

هدر های Http در درخواست و پاسخ

Http Headers (قسمت اول)

هر گاه اطلاعاتی را از سرور نیاز داشته باشیم باید یک درخواست به آن بزنیم و پاسخ را از سمت سرور دریافت کنیم. بر این...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای افزونه CURL در PHP

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *