مثال عملي حقيقي: تحتاج إلى إعادة تشغيل جهاز التوجيه (المودم) لتغيير عنوان IP. للقيام بذلك، تحتاج إلى: تسجيل الدخول إلى جهاز التوجيه، والانتقال إلى صفحة الصيانة والنقر على زر "إعادة التشغيل". إذا كان من الضروري تنفيذ هذا الإجراء عدة مرات، فيجب تكرار الإجراء. أوافق على أنك لا تريد القيام بهذا الروتين يدويًا في كل مرة. يتيح لك cURL أتمتة كل هذا. باستخدام عدد قليل فقط من أوامر cURL، يمكنك الحصول على الترخيص وإكمال المهمة على جهاز التوجيه.
- يعد cURL مفيدًا لاسترداد البيانات من مواقع الويب الموجودة على سطر الأوامر.
أولئك. تعتبر حالات استخدام cURL حقيقية تمامًا، على الرغم من أن المبرمجين الذين يستخدمونها في برامجهم يحتاجون إلى cURL في الغالب.
يدعم CURL العديد من البروتوكولات وطرق الترخيص، ويمكنه نقل الملفات، ويعمل بشكل صحيح مع ملفات تعريف الارتباط، ويدعم شهادات SSL، والوكلاء، وغير ذلك الكثير.
cURL في PHP وسطر الأوامر
يمكننا استخدام cURL بطريقتين رئيسيتين: في نصوص PHP وفي سطر الأوامر.
لتمكين cURL في PHP على الخادم، تحتاج إلى إلغاء التعليق على السطر الموجود في ملف php.ini
الامتداد=php_curl.dll
ومن ثم إعادة تشغيل الخادم.
في نظام التشغيل Linux، تحتاج إلى تثبيت حزمة الضفيرة.
على أنظمة Debian أو Ubuntu أو Linux Mint:
$ sudo apt-get install curl
على Fedora أو CentOS أو RHEL:
$ سودو يم تثبيت الضفيرة
لكي نرى بوضوح الفرق في الاستخدام في PHP وفي سطر الأوامر، سنقوم بتنفيذ نفس المهام مرتين: أولاً في برنامج PHP النصي، ثم في سطر الأوامر. دعونا نحاول عدم الخلط.
استرجاع البيانات باستخدام cURL
استرداد البيانات باستخدام cURL في PHP
مثال في PHP:
كل شيء بسيط للغاية:
$target_url- عنوان الموقع الذي يهمنا. بعد عنوان الموقع، يمكنك وضع نقطتين وإضافة عنوان المنفذ (إذا كان المنفذ مختلفًا عن المنفذ القياسي).
curl_init- تهيئة جلسة جديدة وإرجاع المقبض، والذي تم تخصيصه في مثالنا لمتغير $ch.
نقوم بعد ذلك بتنفيذ الطلب باستخدام وظيفة cURL curl_exec، حيث يتم تمرير الواصف كمعلمة.
كل شيء منطقي للغاية، ولكن عند تنفيذ هذا البرنامج النصي، سيتم عرض محتويات الموقع على صفحتنا. ولكن ماذا لو لم نرغب في عرض المحتوى، ولكننا نريد كتابته في متغير (للمعالجة أو التحليل اللاحق).
دعونا نضيف قليلا إلى السيناريو الخاص بنا:
0) ( صدى "خطأ في الضفيرة: " . curl_error($ch); ) curl_ Close($ch); ?>
لدينا خط curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.
curl_setopt- يحدد الخيارات. يمكن العثور على قائمة كاملة بالخيارات في هذه الصفحة:
مخفية عن الضيوف
$response_data = curl_exec($ch);
الآن تم تعيين قيمة البرنامج النصي للمتغير $response_data، والذي يمكن من خلاله إجراء المزيد من العمليات. على سبيل المثال، يمكنك عرض محتوياته.
غرز
إذا (curl_errno($ch) > 0) ( echo "خطأ في الضفيرة: " . curl_error($ch); )
يعمل على تصحيح الأخطاء في حالة حدوث أخطاء.
استرداد البيانات باستخدام cURL في سطر الأوامر
في سطر الأوامر، فقط اكتب
حيث بدلا من mi-al.ru- عنوان موقع الويب الخاص بك.
إذا كنت بحاجة إلى نسخ البيانات إلى متغير بدلاً من عرض النتيجة على الشاشة، فقم بما يلي:
درجة الحرارة = "curl mi-al.ru"
ومع ذلك، لا يزال يتم عرض بعض البيانات:
لمنع عرضها، قم بإضافة المفتاح -س:
درجة الحرارة = "curl -s mi-al.ru"
ويمكنك مشاهدة ما تم تسجيله:
صدى $ درجة الحرارة | أقل
المصادقة الأساسية وHTTPالمصادقة، ببساطة، هي إدخال اسم المستخدم وكلمة المرور.
المصادقة الأساسية هي المصادقة المستندة إلى الخادم. ولهذا يتم إنشاء ملفين: .htaccessو .htpasswd
محتويات ملف .htaccess هي شيء من هذا القبيل
AuthName "للمستخدمين المسجلين فقط!" يتطلب AuthType Basic مستخدمًا صالحًا AuthUserFile /home/freeforum.biz/htdocs/.htpassw
محتويات ملف .htpasswd هي كالتالي:
ميال: CRdiI.ZrZQRRc
أولئك. تسجيل الدخول وتجزئة كلمة المرور.
عند محاولة الوصول إلى مجلد محمي بكلمة مرور، سيعرض المتصفح شيئًا مثل هذا:
مصادقة HTTP هي الحالة عندما نقوم بإدخال معلومات تسجيل الدخول وكلمة المرور في نموذج على موقع ويب. يتم استخدام هذه المصادقة عند تسجيل الدخول إلى البريد والمنتديات وما إلى ذلك.
مصادقة cURL الأساسية (PHP)
هناك موقع على الانترنت
مخفية عن الضيوف
دعونا نجرب السيناريو الأولي لدينا:
0) ( echo "خطأ في الضفيرة: " . curl_error($ch); ) else ( echo $response_data; ) curl_ Close($ch); ?>
على الرغم من أن البرنامج النصي يعتقد أنه لا يوجد خطأ، إلا أننا لا نحب نتيجة الإخراج على الإطلاق:
أضف سطرين:
Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");
في السطر الأول قمنا بتعيين نوع المصادقة - أساسي. يحتوي السطر الثاني على الاسم وكلمة المرور مفصولين بنقطتين (في حالتنا، الاسم وكلمة المرور متماثلان - ru-board). اتضح مثل هذا:
0) ( echo "خطأ في الضفيرة: " . curl_error($ch); ) else ( echo $response_data; ) curl_ Close($ch); ?> دعنا نحاول: 30946 عظيم! مصادقة cURL الأساسية (في سطر الأوامر) يمكن تحقيق نفس الشيء في سطر الأوامر بسطر واحد: curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/
لم أنس تحديد نوع المصادقة، كل ما في الأمر هو أن نوع المصادقة الأساسي في cURL هو النوع الافتراضي.
تم كل شيء بسرعة كبيرة في سطر الأوامر لدرجة أنني كتبت البرنامج التالي بسبب الإحباط. تتصل بالموقع وتقوم بتنزيل آخر تحديث:
Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Update_FED_201(1).(2).(2).7z" | يونيك | الذيل - ن 1`؛ حليقة -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp
مع عدد قليل من الأوامر الأخرى يمكنك إضافة:
- تفريغ الأرشيف في الدليل المحدد؛
- إطلاق تحديثات ConsultantPlus (هذه تحديثات له)؛
- يمكنك التحقق مما إذا كان قد تم بالفعل تنزيل آخر تحديث متاح أو ظهور تحديث جديد؛
- أضف كل ذلك إلى Cron للحصول على التحديثات اليومية.
مصادقة HTTP cURL في PHP
نحن بحاجة إلى معرفة:
- العنوان حيث سيتم إرسال بيانات المصادقة
- طريقة الإرسال GET أو POST
- تسجيل الدخول
- كلمة المرور
يمكن الحصول على العنوان الذي تريد إرسال البيانات إليه من نموذج المصادقة. على سبيل المثال: