49
تشکر

cURL و مثال هایی از آن در PHP

PHP – پی اچ پی

PHP – پی اچ پی

cURL چیست؟

cURL یک ابزار خط فرمان جهت انتقال فایلها بر اساس URL است. چیزی که cURL را قدرتمند میکند تعداد پروتکل هایی است که این کتابخانه از آنها پشتیبانی میکند که شامل FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE و LDAP است.

cURL مخفف کلمه Client for URLs است.

Daniel Stenberg این کتابخانه را در سال 1997 شروع کرد و بوسیله آن انتقال فایل با پروتکل هایی مانند HTTP, FTP و غیره را بوسیله خط فرمان امکان ساخت.

cURL در PHP

PHP در نسخه 4.0.2 کتابخانه cURL را به خود اضافه کرد، تا از طریق این کتابخانه بتواند اطلاعات را از طریق URL جا به جا کند. برای مثال با استفاده از cURL میتوانید اطلاعات یک وبسایت را بخوانید، به صورت خودکار لاگین کنید، در سایت های دیگر فایل آپلود کنید و خیلی کارهای دیگر.

اما بعضی از اینکارها را هم شاید بتوان با توابع خود PHP مانند file_get_contents انجام داد، اما ابتدا نیاز دارید که گزینه allow_url_fopen در فایل php.ini در سرور شما فعال باشد، و از آنجایی که بیشتر سرورها برای افزایش امنیت این گزینه را غیر فعال میکنند تنها را شما یادگیری و استفاده از cURL است.

در ادامه همراه ما باشید…

مثال از cURL

cURL به صورت پیشفرض بر روی Apache نصب نیست و اگر میخواهید از این کتابخانه بر روی localhost سیستم استفاده کنید ابتدا باید آن را فعال کنید. برای نحوه فعال سازی میتوانید از این مطلب استفاده کنید.

در یک مثال ساده ابتدا ما یک صفحه یک سایت را گرفته و نمایش میدهیم، با استفاده از کد زیر:

$ch = curl_init("http://www.google.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$google = curl_exec($ch);
echo $google;
curl_close($ch);

در خط 1 ابتدا با استفاده از تابع curl_init یک دستگیره (Handle) از آدرس موردنظر میگیریم. سپس در خط 2 با استفاده از تابع curl_setopt مشخص میکنیم که ما میخواهیم اطلاعات بازگشت داده شوند به جای اینکه نمایش داده شوند.

تابع curl_setopt برای اعمال تنظیماتی (Set Option) بر روی سشن موردنظر است. در این مثال ما با استفاده از TRUE کردن مقدار CURLOPT_RETURNTRANSFER به cURL میگوییم که قصد نمایش اطلاعات را نداریم. میتوانید تمامی Optionها را در PHP Manual ببینید.

در خط 3 با استفاده از تابع curl_exec دستورات را اجرا میکنیم، و در خط 5 با تابع curl_close سشن موردنظر را میبندیم.

در خط 4 برای دیدن اینکه واقعا چه چیزی اتفاق افتاده است دستور echo را انجام داده ایم، حالا میتوانید آن چیزی که از سایت مورد نظر لازم دارید استخراج کنید.

اگر دستورات بالا را اجرا کنید خواهید دید که سایت مورد نظر نمایش داده میشود.

اما این یک مثال ساده بود، مثال بالا را میتوانید با تابع file_get_contents هم انجام دهید.

قدرت cURL در تابع curl_setopt است، با استفاده از این تابع چیزی که دقیقا میخواهید را میتوانید پیاده سازی کنید.

در یک مثال دیگر در نظر بگیرید صفحه ای از سایتی (page2.php) را که در صورتی برای شما باز خواهد شد که شما از یک صفحه خاص (page1.php) به آن متصل شده باشید.

در واقع page2.php چک میکند که مقدار HTTP_REFERER شما صفحه page1.php باشد. خوب اگر قرار باشد که ما صفحه page2.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 کارهای بسیار بیشتری هم میتوان انجام داد. امیدواریم این مطلب مقدمه ی خوبی برای آشنایی شما با cURL باشد.

  • محمد می‌گه:

    عالی بود
    ممنون

  • محمود می‌گه:

    با سلام و تشکر از مطلب خوبتان
    لطفا در مورد لاگین به سیستمهای وبلاگدهی و ازسال مطلب هم آموزشی بگذارید.
    با تشکر
    **************
    بهترین راهش توسط metablog سرویس وبلاگدهیتون هستش
    نرم افزار لایو رایتر برای کار در ویندوز میشه به راحتی چندین پست نوشت
    اما اگه کار بخواهد با سی یو آر ال باشد شاید از بعضی از کپچا ها و… نتوان رد شد!!!
    اما آقا محسن دستش درد نکنه من با اینکه همیشه توی وب به روز هستم اما چندین مطلب از اینجا خوندم که برام تازگی داشت ویا منو در برنامه نویسی کمک کرد…:)

  • حسن می‌گه:

    با سلام و تشکر از مطلب خوبتان

    لطفا در مورد لاگین به سیستمهای وبلاگدهی و ازسال مطلب هم آموزشی بگذارید.

    با تشکر


  • نظرات این مطلب بسته است.