cURL کوتاه شده عبارت Client for URLs ، یک ابزار خط فرمان جهت انتقال داده ها با استفاده از پروتکل های مختلف و بر اساس URL است. به علت تعدد پروتکل های قابل پشتیبانی مانند FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE و LDAP توسط این کتابخانه ، آن را مطرح ساخته است. این کتابخانه در سال 1997 توسط Daniel Stenberg شروع شده و بوسیله آن انتقال فایل با پروتکل هایی مانند HTTP, FTP و غیره توسط این خط فرمان امکانپذیر شد.
cURL در PHP
کتابخانه cURL در نسخه 4.0.2 PHP اضافه شد تا از طریق این کتابخانه بتواند اطلاعات را از طریق URL انتقال دهد. به عنوان مثال با استفاده از cURL میتوان اطلاعات یک وبسایت را مشاهده نمود، به صورت خودکار لاگین کرد و یا اینکه در وب سایت های دیگر فایل آپلود کرد و ....
برخی از این کارها را میتوان با توابع PHP مانند file_get_contents انجام داد، اما پیش نیاز این تابع گزینه allow_url_fopen در فایل php.ini است که باید در سرور فعال باشد. از آنجایی که اغلب سرورها جهت افزایش امنیت این گزینه را غیر فعال میکنند ، یادگیری نحوه استفاده از cURL بسیار حائز اهمیت است.
cURL به صورت پیشفرض بر روی آپاچی نصب نیست و ابتدا باید آن را بر روی سرور فعال کرد.
در یک مثال ساده ابتدا ما یک صفحه یک سایت را گرفته و نمایش میدهیم، با استفاده از کد زیر:
$ch = curl_init("http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $google = curl_exec($ch); echo $google; curl_close($ch);
در خط ۱ ابتدا با استفاده از تابع curl_init یکHandle از آدرس موردنظر میگیریم. سپس در خط ۲ با استفاده از تابع curl_setopt مشخص میکنیم که به جای نمایش اطلاعات ، اطلاعات بازگشت داده شود.
تابع curl_setopt برای اعمال تنظیماتی (Set Option) بر روی سشن موردنظر است. در این مثال ما با استفاده از TRUE کردن مقدار CURLOPT_RETURNTRANSFER به cURL میگوییم که قصد نمایش اطلاعات را نداریم. میتوانید تمامی Optionها را در PHP Manual ببینید.
در خط ۳ با استفاده از تابع curl_exec دستورات را اجرا میکنیم، و در خط 5 با تابع curl_close سشن موردنظر را میبندیم.
در خط ۴ جهت مشاهده نتیجه، دستور echo را وارد نموده ایم. حالا میتوانید آن چیزی که از سایت مورد نظر لازم دارید استخراج کنید. با اجرا شدن دستورات بالا ، وب سایت مورد نظر نمایش داده خواهد شد.
مثال بالا را میتوانید با تابع file_get_contents هم انجام دهید.
قدرت cURL در تابع curl_setopt است، با استفاده از این تابع هر چیزی که مد نظر شما است را میتوانید پیاده سازی کنید.
مثالی دیگر را در نظر بگیرید. صفحه ای از سایتی (page2.php) در صورتی برای شما نمایش داده خواهد شد که از یک صفحه خاص (page1.php) به آن متصل شده باشید.
در واقع page2.php چک میکند که مقدار HTTP_REFERER شما صفحه page1.php باشد. بنابراین باید مقدار HTTP_REFERER را برابر page1.php قرار دهیم و برای اینکار هم از تابع curl_setopt استفاده میکنیم.
$ch = curl_init("http://example.com/page2.php"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_REFERER, "http://exapmle.com/page1.php"); $page = curl_exec($ch); curl_close($ch);
با استفاده از کتابخانه cURL کارهای بسیار بیشتری نیز میتوان انجام داد.