2011-01-20 10 views
7

की स्थापना हम बुनियादी प्रमाणीकरण का उपयोग एक वेबसाइट पर लॉगइन करने के लिए PHP5 में कर्ल उपयोग करने के लिए कोशिश कर रहे हैं पेट के साथ गुजरती हैं।समस्याएं या जब CURLOPT_USERPWD

आंशिक कोड इस तरह है:

<? 
... 
$uname = "username"; 
$pass = "p:assword"; 

curl_setopt($ch,CURLOPT_USERPWD,"$uname:$pass"); 
... 
?> 

लेकिन यह हमारे पासवर्ड में पेट मुसीबत खड़ी कर रहा है लगता है।

हम अपने उत्पादन साइट के लिए पासवर्ड बदलने में असमर्थ हैं, लेकिन हम कोड एक अन्य साइट जहां अल्फानुमेरिक यूज़रनेम और पासवर्ड प्रयोग किया जाता है पर ठीक काम करता है की पुष्टि की।

वहाँ पासवर्ड में पेट तो कर्ल अभी भी काम करता है से बचने के लिए कोई तरीका है? हमने भाग्य के साथ "पी \: assword" की कोशिश की।

धन्यवाद।

+0

क्या आप इसे \ N से बच सकते हैं? इस बारे में कोई दस्तावेज प्रतीत नहीं होता है। – Merijn

उत्तर

6

तो यह पता चला है कि यह एक समस्या नहीं था कोलन के साथ .... यह प्रमाणीकरण योजना के साथ एक समस्या थी।

पर पहले हम उपयोग कर रहे थे

:

curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

और बदलते रहे हैं:

curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 

समस्या तय।

किसी अन्य सर्वर के खिलाफ हमारे परीक्षण इसकी खामियां थीं - सर्वर है कि काम किया खिड़कियों पर आईआईएस चल रहा था, उत्पादन सर्वर हम साथ समस्या हो रही थे लिनक्स पर अपाचे चल रहा था।

तो मैं फिर कहता हूँ: वहाँ जाहिरा तौर पर उपयोगकर्ता नाम या पासवर्ड कि कर्ल के साथ कोलन शामिल उपयोग करने के साथ कोई समस्या नहीं है। यह बताता है कि इस समस्या का कोई दस्तावेज क्यों नहीं होगा।

मदद के लिए निष्कर्ष है, और धन्यवाद करने के लिए कूद के लिए खेद है।

+0

मुझे लगता है कि आप पाएंगे कि 'CURLAUTH_DIGEST' आंतरिक रूप से चयनित विधि होगी, क्योंकि यह आमतौर पर' उपयोगकर्ता: दोपहर: पास 'के हैश की तुलना करता है, जिससे कोई अतिरिक्त कॉलन नहीं होता है। – calcinai

0

ऐसा लगता है कि वहाँ कोई दस्तावेज समाधान है, लेकिन आप इस समाधान की कोशिश कर सकते हैं:

curl_setopt($ch, CURLOPT_URL, "http://{$uname}:{$pass}@www.test.com/login.php"); 

लेकिन मैं यह परीक्षण नहीं किया ..

1

मैं कर्ल कोड में CURLOPT_USERPWD की निकासी के कार्यान्वयन ऊपर देखा, इस तरह अपनी किया उपयोगकर्ता नाम-पासवर्ड स्ट्रिंग पर एक आगे searh की तलाश में, नहीं है ":" चरित्र। और फिर उपयोगकर्ता नाम और passwd निकाले गए हैं (पहले स्ट्रिंग: उपयोगकर्ता नाम और स्ट्रिंग के बाद: passwd है)

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

धन्यवाद

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