2012-01-11 3 views
1

ログインが必要なウェブページから情報を取得しようとしています。私はPHP/cURLを使用して、ターゲットウェブサイトのログインページにユーザー名とパスワードを投稿しています。このWebサイトは、相対リンクを使用して、認証されたユーザーをメンバー専用領域にリダイレクトします。Curl会員の代わりに自分のウェブサイトにリダイレクトする対象のウェブサイトにのみリンク

私は200 OKになりました。私は正常に認証されていることがわかります。私の問題は、mywebsite.com/memberareaではなく、ターゲットウェブサイト(targetwebsite.com/memberarea)の実際のメンバーエリアに移動する方法を知らないということです。 cURLでターゲットウェブサイトのベースドメインを指定する方法はありますか?また、次のコードで推奨されていないことをしているかどうか教えてください。ここで

は私がやっているものです...

<?php 
// INIT CURL 
$ch = curl_init(); 

// SET URL FOR THE POST FORM LOGIN 
curl_setopt($ch, CURLOPT_URL, 'https://targetwebsite.com/login.php'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 

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

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD 
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'username=someuser&password=mypassword'); 
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12'); 
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; 
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; 
$header[] = "Cache-Control: max-age=0"; 
$header[] = "Connection: keep-alive"; 
$header[] = "Keep-Alive: 300"; 
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
$header[] = "Accept-Language: en-us,en;q=0.5"; 
$header[] = "Pragma: "; // browsers keep this blank. 

curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com'); 
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 


// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES 
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 

# 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, 0); 

// EXECUTE 1st REQUEST (FORM LOGIN) 
$store = curl_exec ($ch); 


// SET FILE TO DOWNLOAD 
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_URL, 'https://targetwebsite.com?memberarea+welcome+UserFirstName'); 


// EXECUTE 2nd REQUEST (FILE DOWNLOAD) 
$content = curl_exec ($ch); 

//echo $store; 

// CLOSE CURL 
curl_close ($ch); 


?> 
+0

にMAXREDIRECTSを設定することをお勧めしますか? もしそうなら、 'CURLOPT_FOLLOWLOCATION'を使います。 – beta0x64

答えて

0

あなたは場所を受けている:リダイレクト?リダイレクト:もしそうなら、またCURLOPT_FOLLOWLOCATION

を使用し、クリスチャンSciberrasは、あなたが場所を受信して​​、少なくとも3 Proof

+0

これは問題の1つでした。それ以外の場合は、セキュリティ上の理由からHTTPヘッダーでRefererを確認する必要がありました。 –

関連する問題