curlتابع

در این پست در مورد کتابخونه کاربردی cURL خدمتتون توضیح میدم

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

کتابخونه cURL در PHP حاوی توابعی است که به شما اجازه میده تا بتونید با سرورهای دیگه ارتباط برقرار کنید و فرقی نمیکنه که اون سرور تحت کدوم پروتکل ارتباطی داره کار میکنه

با این کتابخونه می تونید خیلی راحت ، بدون نیاز به فرمها و ابزارهای دیگه مقادیری رو به یک صفحه در یک سایت دیگه ارسال کنید و نتیجه بازگردانده شده رو در وبسایت خودتون ببینید که این قابلیت در فرم ها وجود نداره و شما با فرم ها فقط میتونید به صفحات درونی سایت خودتون اطلاعاتی بفرستید و نمی تونید به سایر وبسایت ها یا URLها اطلاعاتی بفرستید ولی کتابخونه cURL این کار رو براحتی براتون انجام خواهد داد.

cURL یکی از کتابخونه های خود PHP هست که نیازی به نصب نداره و شما قرار نیست فایل های این کتابخونه رو از اینترنت دانلود کنید بلکه فقط کافیه این کتابخونه رو در نرم افزار وب سرورتون فعال کنید (کتابخونه cURL بصورت پیشفرض در PHP غیرفعال هست)و فرقی نمیکنه که لوکال هستید یا سرور واقعی ، چون نرم افزار wamp و همچنین xampp این افزونه رو دارن و میتونید استفاده کنید.

پس ابتدا باید کتابخونه رو فعال کنیم ، برای اینکار فایل php.ini رو که یکی از فایل های نرم افزار وب سرورتون هست رو با یک ادیتور باز کنید و دنبال عبارت extension=php_curl.dll  بگردید و اگر در ابتدای این خط سمیکلون وجود داشت ، اونو بردارید و فایل رو ذخیره کنید.

خوب برای اینکه تغییرات داده شده به سرور اعمال بشه باید سرویس های وبسرورتون رو ریستارت کنید که با زدن گزینه Restart All Services در برنامه ومپ این اتفاق خواهد افتاد.

خوب حالا کتابخونه شما آماده شده و شما میتونید از توابع اون استفاده کنید که من پیشنهاد میکنم به مستندات خود PHP در وبسایت php.net مراجعه کنید و اگر هم مشکل زبان انگلیسی داشتید ، عبارت " توابع curl "  رو در گوگل جستجو کنید و آموزشها رو پی بگیرید.

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

فقط یک نمونه ساده ای از کاربرد cURL رو اینجا میارم که بهتر متوجه بشید ولی کاربردهای زیادی که این کتابخونه در کار با URLها داره رو به عهده خودتون میزارم که خیلی راحت میتونید توی اینترنت آموزشهای زیادی رو پیدا کنید .(توصیه میکنم برای جستجو در بین مقالات آموزشی از زبان انگلیسی استفاده کنید ، چون تعداد برنامه نویسان حرفه ای زیادی در سطح دنیا هستند که میتونن به سئوالات شما پاسخ بدن)

 

در این مثال ما از دو صفحه بر روی دو کامپیوتر جداگانه استفاده کرده ایم که صفحه index.php بر روی سرور شماره 1 و صفحه WebService.php هم بر روی سرور شماره 2 قرار داره که ما ، دو مقدار  name و family رو از صفحه index.php  به سمت صفحه WebService.php ارسال میکنیم و در صفحه WebService.php هم بررسی میکنیم که اگه مقادیر گفته شده دریافت شد ، یک پیغام رو برگردونه :

 

صفحه index.php  بروی سرور شماره 1 :

WWW.Domain1.ir    

<?php

$c = curl_init();

curl_setopt($c , CURLOPT_URL , "http://domain2.ir/newp/WebService.php");
curl_setopt($c , CURLOPT_POST , true);
curl_setopt($c , CURLOPT_POSTFIELDS , "name=ali&family=asadi");

$result = curl_exec($c);
curl_close($c);

?>

کدهای موجود در صفحه WebService.php در سرور شماره 2 : 

WWW.Domain2.ir    

<?php
    if(isset($_POST['name']) && isset($_POST['family']))
    {
        echo "Name : ".$_POST['name']."<br>family : ".$_POST['family'];
    }
?>

که در این مثال ما مقادیری رو از یک سایت به سایت دیگه ارسال کردیم و  من برای تحقق این هدف ، فقط از چهارتا تابع این کتابخونه استفاده کردم که توضیح هر کدوم رو میگم :

 

تابع curl_init : این تابع یک منبع اطلاعاتی رو شبیه سازی میکنه و خروجی اون یک شی هست که بایستی درون یک متغیر قرار داده بشه و در دستورات بعدی به این منبع داده ای اشاره خواهیم کرد.

curl_init();

تابع curl_setopt : این تابع نیز برای ست کردن خصوصیات مورد نظر بر روی شی منبع داده ای استفاده میشه که سه تا پارامتر از ما میگیره ، پارامتر اول همون شی منبع داده ای ما هست که با تابع قبلی ساختیم ، پارامتر دوم این تابع خصوصیت مورد نظر هست که میخواهیم به شی منبع داده ای اختصاص بدیم که مقادیری که پذیرش میکنه ، یکسری ثابتها هستن که توی خود کتابخونه تعریف شدن و ما در اینجا از سه تاش استفاده کردیم که اولی آدرس URL رو تنظیم میکنه و دومی نوع ارسال رو که POST تنظیم کردیم و سومی هم مقادیر ارسالی رو ست می کنه و پارامتر سوم تابع curl_setopt هم ، مقدار خصوصیت ست شده هست .

 

curl_setopt($c , CURLOPT_URL , "http://domain2.ir/newp/WebService.php");
curl_setopt($c , CURLOPT_POST , true);
curl_setopt($c , CURLOPT_POSTFIELDS , "name=ali&family=asadi");

تابع curl_exec : این تابع هم برای اجرای دستورات بالا استفاده میشه ، یعنی شروع ارسال مقادیر و دریافت پاسخ از URL ذکر شده که نتیجه این تابع رو هم درون یک متغیر ذخیره میکنیم.

$result = curl_exec($c);

تابع curl_close : تابع آخر هم برای بستن شی منبع داده ای کاربرد داره که حتما باید استفاده بشه .

 

نکته :  curl بصورت خودکار داده ها رو بر میگردونه که اگه خواستید این ویژگی رو غیر فعال کنید از تنظیم زیر قبل از اجرای url استفاده کنید.

curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);

 

 

امیدوارم براتون مفید بوده باشه

من منتظر نظرات و سئوالات شما در خصوص این پست آموزشی هستم و مشتاقانه به سئوالات شما پاسخ خواهم داد.

ارادتمند شما مهدی حسامی