2011-10-27 9 views
11

मैं यूआरएल लाने के लिए PHP के माध्यम से कर्ल का उपयोग कर रहा हूं। मैं पेज, हेडर और सभी को डाउनलोड करने में सफलतापूर्वक सक्षम हूं। हालांकि, किसी भी पेज द्वारा लौटाई गई कुकीज़ निर्दिष्ट फ़ाइल में सहेजी नहीं जाती है। मैंने अनुमतियों की जांच की है, और सामान्य से कुछ भी नहीं दिखता है। मुझे लगता है कि मेरे कोड में कुछ बंद है।php का उपयोग कर एक curl अनुरोध के जवाब से कुकीज़ कैसे सहेजूं?

$get_cookie_page = 'http://www.google.ca'; 
echo curl_download($get_cookie_page); 

function curl_download($Url){ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $Url); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
    $http_headers = array(
        'Host: www.google.ca', 
        'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2', 
        'Accept: */*', 
        'Accept-Language: en-us,en;q=0.5', 
        'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
        'Connection: keep-alive' 
       ); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $http_headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    $output = curl_exec($ch); 
    curl_close($ch); 
    return $output; 
} 

किसी भी मदद की सराहना की।

+0

आपका कोड अच्छा दिखता है - क्या आप 1000% सुनिश्चित हैं कि कुछ कुकीज़ सहेजने के लिए हैं? – DaveRandom

+0

कर्ल फ़ाइल में सत्र कुकीज नहीं लिखेंगे, केवल स्थायी वाले। –

+0

@ डेव यादृच्छिक: हां कुकीज़ सहेजी जा रही हैं। –

उत्तर

19

सभी की मदद के लिए सभी को धन्यवाद। हालांकि, समस्या पूरी तरह से कुछ और थी। मुझे शायद यह उल्लेख करना चाहिए था कि मैं एक विंडोज सर्वर पर काम कर रहा हूं और कर्ल cookie.txt के पथ को पढ़ने में असमर्थ था।

का उपयोग करना:

curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt'); 

के बजाय:

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 

समस्या हल हो।

+0

पर CHMOD'ing करने का प्रयास करें 'FILE' को' __FILE__' के साथ बदलें। उत्तर के लिए धन्यवाद, वास्तव में सहायक। –

+0

@Andrew मैंने मूल उत्तर तय कर दिया है। गलती पकड़ने के लिए धन्यवाद। –

4

कुकी जार फ़ाइल के लिए एक पूर्ण पथ का उपयोग करें ताकि आप सुनिश्चित हों कि यह कहां से बचाया गया है और इस प्रकार आप जानते हैं कि आपको वहां लिखने की सही अनुमति है।

कर्ल भंडार सभी कुकीज़ यह तथाकथित सत्र कुकीज़ (है कि एक समाप्ति समय बिना कर रहे हैं) सहित फ़ाइल, के जानता है

संबंधित मुद्दे