人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: どうもと
●カテゴリ:インターネット ウェブ制作
✍キーワード:as echo name PHP こんにちは
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● angemaries
●15ポイント

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

下記ご参照ください。

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

◎質問者からの返答

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

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

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


2 ● zebevogue
●50ポイント ベストアンサー

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

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

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

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

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

◎質問者からの返答

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

$response = $client->currentResponse();

foreach($response as $line){

echo($line);

}

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


3 ● angemaries
●15ポイント

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

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

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

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

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);

◎質問者からの返答

ありがとうございます。結局、言語を問わず、セッションを保持するにはクッキーがキモのようです。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のライブラリーがぶっ込んでないのが原因かなと。自分は気にしないので別にいいんですが( ̄ー ̄)。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ