PHPスクリプトの質問です。

PHPでヤフーオークションの画面を表示したいのですが、以下のように単純に読み込むだけでは、非ログインのゲスト画面が表示されます。
>>
<?php
$file = file($_POST['name']);
echo($_POST['name']);
foreach($file as $line){
echo($line);
}
?>
<<
ログイン後の、こんにちは、hogehoge さん の画面を表示させるのはどうすればよいでしょうか?ブラウザーではログイン済みで、ログイン後の画面が表示されます。
出来れば、ズバリのコードを書いていただけると助かります。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/05/14 11:39:14
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:zebevogue No.2

回答回数65ベストアンサー獲得回数7

ポイント50pt

ズバリはちょっと手がかかるので、リンクですみませんが。

http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270079/

リンクはmixiへのログインですが、PEAR::HTTP_Clientを使うとセッションを簡単に保持する事ができます。

formで渡すinputのnameなどを揃えてあげればログイン後のHTMLが取得できると思います。

(リンク先の$login_paramsですね)

id:doumoto

おおお、ありがとうございます。残念ながら糞虫mixiがレイアウトを変更してしまったために、サンプルそのものはうまく動作しない(実際はしてるんだけど、アンマッチで表示されない)ので、単純にベタっと出力してみると、ログイン後の画面を抜いてきました。

$response = $client->currentResponse();

foreach($response as $line){

echo($line);

}

あとでヤフオクも試して見ます( ̄ー ̄)。

2009/05/14 01:08:24

その他の回答2件)

id:angemaries No.1

回答回数80ベストアンサー獲得回数2

ポイント15pt

ログインをしてセッションを作成しないとそのようになります。

下記ご参照ください。

http://q.hatena.ne.jp/1137891311

id:doumoto

最後のurlがなんとなくアレだけど、ログインするのは外部のシステムなんで、そういう一般論を言われても。┐(´ー`)┌。

http://dev.ishinao.net/archives/000021.html

ログインのAPIが公開されない限り、現実問題として実現不可能って結論かなあと。

2009/05/13 07:35:00
id:zebevogue No.2

回答回数65ベストアンサー獲得回数7ここでベストアンサー

ポイント50pt

ズバリはちょっと手がかかるので、リンクですみませんが。

http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270079/

リンクはmixiへのログインですが、PEAR::HTTP_Clientを使うとセッションを簡単に保持する事ができます。

formで渡すinputのnameなどを揃えてあげればログイン後のHTMLが取得できると思います。

(リンク先の$login_paramsですね)

id:doumoto

おおお、ありがとうございます。残念ながら糞虫mixiがレイアウトを変更してしまったために、サンプルそのものはうまく動作しない(実際はしてるんだけど、アンマッチで表示されない)ので、単純にベタっと出力してみると、ログイン後の画面を抜いてきました。

$response = $client->currentResponse();

foreach($response as $line){

echo($line);

}

あとでヤフオクも試して見ます( ̄ー ̄)。

2009/05/14 01:08:24
id:angemaries No.3

回答回数80ベストアンサー獲得回数2

ポイント15pt

リンク先は間違えました。失礼しました。

プログラムの中でログインページにポストし、

その時のクッキーを保持し、実際に取得したいページをリクエストするときに、

そのクッキーを追加してリクエストするということです。

perlでは参考にならないかも知れませんが、自身で過去に書いたコードです。

# ログイン

my $url = 'http://hogehoge/index.php#login';

my %formdata = ('userID' => 'fugefuge', 'userPassword' => 'password', 'exec' => 'Login::Login');

my $request = POST($url, [%formdata]);

my $res = $ua->request ($request);

my $cookies = $res->header('Set-Cookie');

# エントリページへ

$url = 'http://hogehoge/index.php?view_c=Blog::PostEntry.html&user-id=fu...

$request = GET($url);

$request->header(cookie => join(';', $cookies));

$res = $ua->request ($request);

id:doumoto

ありがとうございます。結局、言語を問わず、セッションを保持するにはクッキーがキモのようです。perlも触れなくはないのですが、HTMLを適当に表示したり、文字列をいじり回すのには、phpのほうがラクなので、phpでシステムを構築しています。

ちなみに、yahooのログインページのソースを見ると、

<input name="login" id="username" …>

<input name="passwd" id="passwd" …>

に、なっていますので、PHPのPEAR::HTTP_Clientで読み込む場合は、下記でOKでした。

$login_params = array("next_url" => "/0-category.html", "login" => $email,

"passwd" => $password);

$login_url = "http://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp&.src=auc&....";

つーか、SSLだと通らないのは、SSLのライブラリーがぶっ込んでないのが原因かなと。自分は気にしないので別にいいんですが( ̄ー ̄)。

2009/05/14 11:28:13
  • id:doumoto
    やっぱり、外部のスクリプトからサックリとログイン出来るとなると、セキュリティー的にアレなんで、簡単に実行できないですよね。(´ー`)y-~~。
    http://www.phppro.jp/qa/detail.php?id=1580
    http://okwave.jp/qa3533013.html
    phpではないのですが、visual auctionとか取引ナビブラウザーとかいうソフトがあり、.NET Framework2.0 を使って、ログイン後の情報を抜いているので、なんらかの方法で可能なんだろうけど、phpでは困難なんだろうか?(´ー`)y-~~。
    urlの羅列から、終了したオークションのとある項目を自動的に抜いてきて欲しいだけなので、vb.netとか使うほうが、実現への近道かもしれないけど、触ったことないので皆目見当が付かない。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません