2009-08-14 11 views
9

मैं इस वेबसाइट को स्क्रैप करने के लिए एक php स्क्रिप्ट विकसित कर रहा हूं और मुझे डेटा भेजता हूं। ऐसा लगता है कि जब स्क्रिप्ट चलती है, तो यह रीडायरेक्ट प्रतीत होता है और मुझे एक संदेश देता है कि ऑब्जेक्ट यहां ले जाया गया है और यहां डिफ़ॉल्ट.एएसपीएक्स पेज से जुड़ा हुआ है जो मैन्युअल रूप से लॉगिन करते समय ठीक होता है।php ssl curl: ऑब्जेक्ट त्रुटि

नीचे मेरी स्क्रिप्ट है:

<?php 
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; 

// INIT CURL 
$ch = curl_init(); 

//init curl 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 

// SET URL FOR THE POST FORM LOGIN 
curl_setopt($ch, CURLOPT_URL, 'https://access.manager.com/Login.aspx'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 

// Set your login and password for authentication 
curl_setopt($ch, CURLOPT_USERPWD, 'testu:passwd'); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 


// This is occassionally required to stop CURL from verifying the peer's certificate. 
// CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if 
// CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2 - check the existence of a 
// common name and also verify that it matches the hostname provided) 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

// Optional: Return the result instead of printing it 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// ENABLE HTTP POST 
curl_setopt ($ch, CURLOPT_POST, 1); 

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD 
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'Username=testu&Password=passwd'); 

# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL 
# not to print out the results of its query. 
# Instead, it will return the results as a string return value 
# from curl_exec() instead of the usual true/false. 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

// EXECUTE 1st REQUEST (FORM LOGIN) 
$store = curl_exec ($ch); 
echo $store; 
// CLOSE CURL 
curl_close ($ch); 

?> 

किसी भी विचार क्या उत्पादन के लिए सही ढंग से पेज पेज को रोकने जा सकता है? मैं अनुमान लगा रहा हूं कि यह सही ढंग से पुनर्निर्देशित नहीं है। अग्रिम

उत्तर

11
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 

बदलें में

धन्यवाद 1. इसके अलावा करने के लिए, CURLOPT_SSL_VERIFYPEER बाद में इसे सेट कि:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
+0

भयानक! यह तय है। – phill

+0

इसके अलावा, CURLOPT_MAXREDIRS पर नज़र डालें, आपको इसका उपयोग करना पड़ सकता है (भविष्य में?)। –

+1

क्यों? उपयोगकर्ता को इन्हें क्यों जोड़ना/बदलना चाहिए? –

2

आप निम्न का उपयोग कर सकते हैं:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_MAXREDIRS,5); // return into a variable 
+0

@ जेफरी-रोसेंडाल संपादन के लिए धन्यवाद। –