2012-05-29 5 views
5

मुझे HTTP प्रमाणीकरण में कोई समस्या है। मुझे इस यूआरएल की सामग्री नहीं मिल सका क्योंकि इसे http auth की आवश्यकता है।PHP कर्ल - http प्रमाणीकरण के साथ यूआरएल एक्सेस करना (सहायता चाहिए)

कोड:

<?php 

$url = "http://www.abcdefg.com/12345/"; 

$username = 'username'; 
$password = 'password'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 

$out = curl_exec($ch); 

print "error:" . curl_error($ch) . "<br />"; 
print "output:" . $out . "<br /><br />"; 

curl_close($ch); 

?> 

समस्या है: इसके बजाय वास्तविक सामग्री को दिखाने के , यह "302 मिली, दस्तावेज़ यहां ले जाया गया है।" से पता चलता

मैंने "http: // उपयोगकर्ता नाम: [email protected]/12345/" कोशिश की है, काम नहीं करता है।

इस यूआरएल (1) तक पहुंचने पर, एक पॉपअप विंडो उपयोगकर्ता नाम और पासवर्ड मांगती है। लेकिन पॉपअप विंडो एक और यूआरएल (2) (एक एसएसओ प्रमाणीकरण सर्वर) से है। अगर प्रमाणीकरण पास करते हैं। तो यह फिर से यूआरएल (1) पर वापस आता है। इस समय, मैं इस यूआरएल (1) की सामग्री तक पहुंच सकता हूं।

मैं फ़ायरबग का उपयोग ब्राउज़र से सीधे url से आने से निम्न संदेश मिलता है:

चरण 1

URL: GET http://www.abcdefg.com/12345/ 
Status: 302 Found 
Protocol: http 

चरण 2

URL: GET https://www.ssoauth.com/obrareq.cgi?wh=xxx wu=xxx wo=xxx rh=http://www.abcdefg.com ru=/12345/ 
Status: 302 Redirect 
Protocol: https 

चरण 3

URL: GET http://www.abcdefg.com/obrar.cgi?cookie=xxxxxxxxxxxxxxx 
Status: 302 Found 
Protocol: http 

चरण 4

URL: GET http://www.abcdefg.com/12345/ 
Status: 200 OK 
Protocol: http 

तब सामग्री को प्रदर्शित ...

कुकी के साथ क्या करना यह कुछ है? सामग्री को पढ़ने के लिए मैं php curl का उपयोग कैसे कर सकता हूं?

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

यह cURL पालन 302 बनाने के लिए और एक अतिरिक्त अनुरोध उत्पन्न करेगा:

उत्तर

5

आप सेट करना होगा।

+0

मैं सिर्फ curl_setopt जोड़ा ($ ch, CURLOPT_FOLLOWLOCATION, true) लेकिन यह पता चलता है "लाइन 32 में त्रुटि पार्स" लाइन 32 है: curl_setopt ($ ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); क्या मुझे https से संबंधित sth जोड़ने की आवश्यकता है? ** चरण 2 ** में cuz, यह पोर्ट 443 के साथ https का उपयोग करता है। – Strong

+0

मैं लाइन के अंत में ';' भूल गया! –

+0

opps, ";" चूक गया ... – Strong

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