2012-06-29 6 views
5

मुझे यह कोड इंटरनेट में मिला और मैंने इसे अपने उपयोग के लिए संशोधित किया, मुझे यकीन नहीं है कि मैं यहां क्या कर रहा हूं, मुझे यह त्रुटि मिल रही है कर्ल त्रुटि: एसएसएल कनेक्शन टाइमआउट लॉगिन हिस्सा सफल है, लेकिन खोज मेरे साथ काम नहीं कर रही है। क्या कोई मेरी मदद कर सकता है कृपया?curl php ssl कनेक्शन टाइमआउट

<?php 
//create array of data to be posted 
$post_data['username'] = 'user'; 
$post_data['password'] = 'log'; 
$post_data['cmd'] = 'log'; 

//create array of data to be posted 
foreach ($post_data as $key => $value) { 
    $post_items[] = $key . '=' . $value; 
} 
//create the final string to be posted using implode() 
$post_string = implode ('&', $post_items); 
//create cURL connection 
$curl_connection = 
    curl_init('https://sie.com'); 
//set options 
///curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 3990); 

curl_setopt($curl_connection, CURLOPT_USERAGENT, 
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 

curl_setopt($curl_connection, CURLOPT_HTTPHEADER, array(
    'Connection: Keep-Alive', 
    'Keep-Alive: 300' 
)); 

curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1); 
//set data to be posted 
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string); 
//perform our request 
$result = curl_exec($curl_connection); 
//show information regarding the request 

//print_r(curl_getinfo($curl_connection)); 
//echo curl_errno($curl_connection) . '-' . 
    //    curl_error($curl_connection); 
//close the connection 
//curl_close($curl_connection); 


echo $result."\n"; 


$post_data1['cmd'] = 'Viewr'; 
$post_data1['search'] = 'test'; 



foreach ($post_data1 as $key => $value1) { 
    $post_items1[] = $key . '=' . $value1; 
} 
$post_string1 = implode ('&', $post_items1); 
echo $post_string1."\n"; 
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($curl_connection, CURLOPT_USERAGENT, 
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1); 
//set data to be posted 
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string); 
//perform our request 
$result1 = curl_exec($curl_connection); 
//show information regarding the request 
//$result1 =1; 
//close the connection 
//curl_close($curl_connection); 
if ($result1) 
echo "ok \n\n"; 
else 
echo "nok\n"; 
if(curl_errno($curl_connection)) 
{ 
    echo 'Curl error: ' . curl_error($curl_connection)."\n"; 
} 
echo($post_string1); 
echo $result1."\n"; 


curl_close($curl_connection); 


?> 
+0

हाय क्रेग, सुनिश्चित नहीं है कि यह कैसे करें? –

+0

सही उत्तर के आगे, रेटिंग – craig1231

+0

के नीचे आपके अन्य प्रश्नों पर, सभी उत्तरों के बगल में एक चेकमार्क है। इस मुद्दे को हल करने में आपको हल या सहायता करने वाले व्यक्ति की जांच करें। यह मायने रखता है। –

उत्तर

4

जोड़ने की कोशिश इस (लेकिन इस विकल्प का उत्पादन में सेट मत छोड़ो!):

curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); 

यदि यह बाद में काम करता है, ऐसा इसलिए है क्योंकि कर्ल SSL प्रमाणपत्र बातचीत करने के लिए विफल हो रहा है।

कैसे CA प्रमाणपत्र प्राप्त करने के लिए चरणों के लिए इस ट्यूटोरियल का पालन करें: किसी और http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

कुछ है इस पर गौर करने के लिए, अपने curl_exec ( से पहले), curl_copy_handle(); और अतिरिक्त पैरामीटर तो निर्धारित किया है।

इसके अतिरिक्त, या वैकल्पिक रूप से, आप curl_init($url); के साथ curl को फिर से शुरू कर सकते हैं।

+0

यह वास्तव में झूठी पर सेट है, मैंने अभी इसे चेक किया है। –

+0

क्या आपके पास वायरशर्क या टीसीपीडब्ल्यूएमपी है? क्या आपको 443 पर प्रतिक्रिया मिली है? या यह टीसीपी एसवाईएन पर लटका हुआ है? –

+0

तो लॉगिन काम कर रहा है, जो पहला curl_exec है, लेकिन फिर दूसरा curl_exec अटक गया है –

0

अस्थायी रूप से SSL सत्यापन को अक्षम करने के लिए सूचीबद्ध 2 विकल्पों का उपयोग करें, हो सकता है (यदि कर्ट सही तरीके से सेटअप नहीं हैं)। "CURLOPT_SSL_VERIFYHOST" विकल्प पर ध्यान दें। अन्यथा मैं सिर्फ विकल्पों के साथ खेलूँगा। इसके अलावा आपको उन मानों के माध्यम से लूप नहीं करना है, आप केवल एक एसोसिएटिव सरणी का उपयोग कर सकते हैं।

<?php 
//create array of data to be posted 
$post_data['username'] = 'user'; 
$post_data['password'] = 'log'; 
$post_data['cmd'] = 'log'; 

//create cURL connection 
$curl_connection = curl_init(); 
//set options 
curl_setopt($curl_connection,CURLOPT_SSL_VERIFYHOST,0); 
curl_setopt($curl_connection,CURLOPT_SSL_VERIFYPEER, false); 

// ...

curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_data);//it can accept associative arrays 

// ...

?> 
0

अन्य उत्तर की कोशिश के बाद, मैं अभी भी SSL connection timeout त्रुटि हो रही थी।

मैं अपने php.ini में जाँच की और अगर वहाँ OpenSSL से संबंधित कुछ भी था की जांच करने का फैसला किया और मुझे लगता है कि मिला:

;extension=php_openssl.dll 

मैं लाइन uncommenting द्वारा यह सक्षम होना चाहिए।

extension=php_openssl.dll 

अब जो OpenSSL के साथ सक्षम है (यह विंडोज पर पैरामीटर है, उस पर लिनक्स/मैक समान होना चाहिए) और मेरे अपाचे सर्वर पुनरारंभ करने के बाद, मैं अंत में किसी भी त्रुटि के बिना मेरी cURL अनुरोध को निष्पादित कर सकते हैं!