2012-05-29 13 views
5

HTTP認証に問題があります。私はHTTPの認証が必要なので、このURLの内容を取得できませんでした。php curl - http認証でURLにアクセスする(ヘルプが必要)

コード:

<?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:// username:[email protected]/12345/"を試しましたが動作しません。

このurl(1)にアクセスすると、ユーザー名とパスワードを尋ねるポップアップウィンドウが表示されます。ポップアップウィンドウは別のurl(2)(sso認証サーバー)からのものです。認証に合格した場合。再びurl(1)に戻ります。この時点で、私はこのURLの内容にアクセスできます(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を使ってコンテンツを読むにはどうしたらいいですか?

答えて

5

あなたが設定する必要があります。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

を。これは、カールが302を従わせると、追加の要求を生成します。

+0

私はちょうど (真$ chの、CURLOPT_FOLLOWLOCATION、) ますcurl_setoptを追加しましたが、それは ライン32は、 "ライン32にエラーを解析" を示しています。 ますcurl_setopt($ chを、CURLOPT_HTTPAUTH、CURLAUTH_ANY)。 httpsに関連するsthを追加する必要がありますか? **ステップ2 **では、ポート443でhttpsを使用しています。 – Strong

+0

行の最後に ';'を忘れました! –

+0

opps、 ";"を逃しました... – Strong

関連する問題