يخدم تطبيق PHP كلاً من Alice وBob، وكلاهما يستخدم عميل cURL من جهة الخادم للوصول إلى الموقع البعيد نفسه عبر وكيل. إذا حمّل كل طلب cookies.txt، فقد يرث المستخدمان تسجيل الدخول البعيد نفسه. تغيير عناوين الوكيل الخاصة بهما لا يفصل ذلك الملف.

اختر مالك ملف تعريف الارتباط قبل اختيار اسم الملف. عادةً هو الجلسة البعيدة المنطقية للتطبيق: مستخدم محلي، وحساب بعيد محدد، وعند الحاجة مساحة عمل منفصلة. نقطة نهاية الوكيل خيار توجيه، وليست معرّف جلسة موثوقاً. يمكن لعدة مستخدمين مشاركة نقطة نهاية واحدة، ويمكن لنقطة النهاية تدوير المخارج.

حمّل واحفظ برطمان الجلسة نفسها

دع التطبيق يربط جلسته الموثّقة بمفتاح ملف يُنشئه الخادم. مع دليل ملفات تعريف ارتباط خاص و$sessionKey موثوق، يأخذ إعداد cURL هذا الشكل:

$jar = $cookieDirectory . '/' . $sessionKey . '.cookies';

$ch = curl_init('https://service.example.net/account');
curl_setopt_array($ch, [
    CURLOPT_PROXY => 'http://proxy.example.net:8080',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIEFILE => $jar,
    CURLOPT_COOKIEJAR => $jar,
]);

لاختبار جلسة مسموح به على موقع عام في شبكة تسمح بوسيط عام، توفّر قائمة وكلاء HTTP نقاط نهاية مرشحة. استخدم مقبضاً بلا مصادقة وكيل مُهيأة أو بيانات اعتماد وكيل محفوظة، وأبقِ حالة ملف تعريف الارتباط مخصصة للجلسة المقصودة. تُهيئ هذه القطعة مقبضاً؛ وينفّذ التطبيق النقل ويتحقق من نتيجته عبر تدفق الطلبات المعتاد. يحمّل COOKIEFILE ملفات تعريف الارتباط السابقة للجلسة. ويحدد COOKIEJAR المكان الذي يكتب فيه المقبض ملفات تعريف الارتباط المحتفظ بها. تعيين ملف الإخراج وحده لا يحمّل تسجيل الدخول السابق.

يمكن أن تبدأ جلسة جديدة بلا ملف. أعطِ أول نقل لها مسار البرطمان المقصود، ودع الموقع ينشئ ملفات تعريف الارتباط، واحفظ الحالة الناتجة للطلب التالي. يجب أن يكون دليل ملفات تعريف الارتباط قابلاً للكتابة من عامل التطبيق وأن يبقى خارج شجرة المستندات المخدومة علناً. لا تحوّل اسم مستخدم أو مساراً يقدمه زائر إلى اسم ملف؛ ابحث عن المفتاح الموثوق على الخادم.

الحفظ يحتاج موضعاً في دورة حياة الطلب

يكتب libcurl البرطمان عادةً أثناء تنظيف المقبض. إذا احتاج التطبيق إلى نقطة حفظ صريحة بعد التبادل البعيد، فيمكنه طلب:

curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');

يكتب هذا ملفات تعريف الارتباط المعروفة حالياً للمقبض في برطمانه المهيأ. أنهِ استخدام المقبض لتلك الجلسة قبل إسناده لعمل غير ذي صلة. تغيير اسم مسار البرطمان وحده على مقبض يحمل بالفعل ملفات تعريف ارتباط Alice لا يكافئ إنشاء جلسة Bob النظيفة.

ميّز أيضاً بين تنزيل ناجح واستمرار ناجح. توثيق البرطمان يذكر أن فشل الكتابة أثناء التنظيف لا يُعاد كخطأ نقل عادي. تحقق من ملكية الدليل والأذونات ومخرجات التطبيق التشخيصية عندما يعمل تسجيل الدخول لطلب واحد ويختفي في التالي.

تقدم الطلبات المتزامنة حدوداً أخرى. يمكن لعاملين تحميل البرطمان القديم نفسه، وتغيير حالتهما في الذاكرة بشكل مستقل، ثم حفظ نتائج مختلفة. يجب أن يغطي قفل لكل جلسة أو تسلسل مكافئ تسلسل التحميل والتبادل والحفظ بأكمله إذا شارك الطلبان تسجيل دخول بعيداً واحداً؛ وقفل الكتابة النهائية فقط لا يوفّق بين لقطاتهما السابقة. يجب أن يكون للجلسات المختلفة ملفات مختلفة وأقفال مستقلة.

عند تسجيل الخروج، أنهِ الجلسة البعيدة المقصودة وأحِل حالة ملفات تعريف الارتباط المحلية وفق سياسة التطبيق. يمكن بعد ذلك إرفاق وكيل مختار حديثاً بأي جلسة جديدة يبدأها المستخدم، دون أن يصبح عنوان الوكيل مسؤولاً عن تحديد من هو صاحب تسجيل الدخول في الذاكرة.

مقالات ذات صلة