जितना संभव हो मैं कोशिश करता हूं, मैं PHPSESSID
कुकी पास करने के लिए कर्ल प्राप्त करने में असमर्थ हूं। मेरे पास कई अन्य लोगों द्वारा वर्णित एक समान सेटअप है, लेकिन मैं प्रस्तावित समाधानों में से कोई भी काम नहीं कर पाया है।कर्ल पास नहीं हो रहा है phpsessid
मेरे पास एक पृष्ठ है जो pageA.php
पर अनुरोध प्राप्त करता है। pageA.php
को pageB.php
से कुछ जानकारी की आवश्यकता है, जो कि किसी अन्य सर्वर पर है, इसलिए मैं कर्ल का उपयोग कर रहा हूं। pageB
सत्र स्थिति को बनाए रखता है कि मुझे अपने पृष्ठ से और जाने की आवश्यकता है।
मैं, pageB
को pageA
से अन्य कुकीज़ पारित करने के लिए बस नहीं PHPSESSID
कुकी सक्षम हूँ।
निम्नलिखित काम करता है (एक कुकी pageB
पर आता है):
$options[CURLOPT_COOKIE] = "myPHPSESSID=" . $sessionId;
निम्नलिखित नहीं करता है:
$options[CURLOPT_COOKIE] = "PHPSESSID=" . $sessionId;
(मैं एक $ विकल्प सरणी का निर्माण और फिर इसे curl_set_opt_array
के पास)
वास्तव में, बाद में किसी प्रकार की त्रुटि का कारण बनता है जिसे मैं समझने में असमर्थ हूं, क्योंकि curl_exec
पर मेरा कॉल कभी नहीं लौटाता है (और pageB
कभी नहीं पहुंचा है)।
मैं हेडर स्थापित करने के बजाय CURLOPT_COOKIE का उपयोग कर की कोशिश की है, लेकिन यह भी कोई सफलता के साथ:
$options[CURLOPT_HTTPHEADER][] = "Cookie: myPHPSESSID=" . $sessionId;
ऊपर काम करता है ठीक है, लेकिन
$options[CURLOPT_HTTPHEADER][] = "Cookie: PHPSESSID=" . $sessionId;
नहीं करता है।
PHP स्पष्ट रूप से नहीं चाहता कि मैं मैन्युअल रूप से PHPSESSID सेट करूं। मुझे यकीन नहीं है कि यह प्रासंगिक है, लेकिन पेज पर कभी भी नहीं, क्या मैं start_session()
पर कॉल करता हूं (हालांकि मैंने ऐसा करने की कोशिश की और उसी परिणाम भी थे)।
मुझे एहसास है कि मैं (शायद) सत्र आईडी को अलग-अलग नाम वाली कुकी के रूप में पास कर सकता हूं और पेज बी कॉल set_session_id()
या कुछ समान है। लेकिन मैं वास्तव में जानना चाहता हूं कि मैं जो कर रहा हूं वह काम नहीं कर रहा है, क्योंकि मैं कामकाज बनाने से गलत काम कर रहा हूं। मैं विभिन्न शीर्षकों के कुछ डंप प्रदान कर सकता हूं जो कि उपयोगी होने पर चारों ओर पिंग कर रहे हैं, लेकिन मुझे लगता है कि यह प्रश्न अब तक काफी लंबा है।
धन्यवाद ...
धन्यवाद, हालांकि मैं इस सलाह को देखा और कोई लाभ नहीं हुआ यह कोशिश की। मेरा पृष्ठ कभी भी 'start_session();' नहीं कहता है, इसलिए 'session_write_close();' का कोई प्रभाव नहीं प्रतीत होता है। –
हम्मम्म लेकिन यदि आप कोई सत्र शुरू नहीं करते हैं तो आपको $ सत्र आईडी कहाँ मिलती है? आप कर्ल के साथ PHPSESSID पास कर सकते हैं, क्योंकि मैं इसे वाईआई और सादे स्क्रिप्ट के साथ कर रहा हूं। मैंने अपनी पोस्ट को स्क्रिप्ट के साथ अपडेट किया है। – JorgeeFG
ओह - अस्पष्ट होने के लिए खेद है। '$ SessionId' क्लाइंट ब्राउज़र से आ रहा है। मेरा PHP पृष्ठ जो curl का उपयोग करता है, क्रॉस-डोमेन समस्याओं को प्राप्त करने के लिए केवल एक प्रॉक्सी है, इसलिए यह किसी भी सत्र स्थिति को बनाए रखता नहीं है। मैंने '$ _COOKIE' से' $ sessionId' पढ़ा है जो ग्राहक से प्रॉक्सी पृष्ठ पर प्रत्येक अनुरोध के साथ आता है। –