अलग प्रयोगकर्ता सत्रहरूका लागि PHP cURL कुकी जारहरू
टाढाको सत्रको वरिपरि PHP cURL कुकी दृढताको डिजाइन: विश्वसनीय फाइल नामहरू, स्पष्ट बचत र एकैसाथ अनुरोधहरू।
एउटा 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 को सफा सत्र बनाउनुसरह हुँदैन।
सफल डाउनलोड र सफल दृढता पनि छुट्याउनुहोस्। कुकी-जार कागजातले भन्छ कि सफाइका क्रममा हुने लेखन असफलता सामान्य स्थानान्तरण त्रुटिका रूपमा फर्काइँदैन। जब लगइन एउटा अनुरोधका लागि काम गर्छ र अर्कोमा हराउँछ, डाइरेक्टरी स्वामित्व, अनुमति र अनुप्रयोगको निदान आउटपुट जाँच्नुहोस्।
एकैसाथ अनुरोधहरूले अर्को सीमा ल्याउँछन्। दुई कामदारले एउटै पुरानो जार लोड गर्न सक्छन्, स्वतन्त्र रूपमा आफ्नो स्मृतिगत अवस्था बदल्न सक्छन्, र त्यसपछि फरक नतिजा बचत गर्न सक्छन्। यदि दुवै अनुरोधले एउटै टाढाको लगइन साझा गर्छन् भने, प्रति-सत्र लक वा समतुल्य क्रमबद्धताले पूरै लोड, आदानप्रदान र बचत क्रम ढाक्नुपर्छ; केवल अन्तिम लेखन लक गर्दा तिनीहरूका अघिल्ला स्न्यापसट मिल्दैनन्। फरक सत्रहरूमा फरक फाइल र स्वतन्त्र लक हुनुपर्छ।
लगआउटमा, इच्छित टाढाको सत्र अन्त्य गर्नुहोस् र अनुप्रयोगको नीतिअनुसार यसको स्थानीय कुकी अवस्था अवकाश दिनुहोस्। नयाँ छानिएको प्रोक्सी त्यसपछि प्रयोगकर्ताले सुरु गर्ने कुनै पनि नयाँ सत्रसँग जोड्न सकिन्छ, प्रोक्सी ठेगानालाई स्मृतिमा कसको लगइन छ भनी निर्णय गर्ने जिम्मेवारी नदिई।