0

次の方法でログインフォームを送信しています。

$loginRequest = array(
                      'Username' => 'myUsername'
                      'Password' => 'myPassword'
);
$request = new HTTP_Request2($url, HTTP_REQUEST2::METHOD_POST);
$request->addPostParameter($loginRequest);
$response = $request->send();

POST は成功し、$ の出力response

</body>
<a id="refresh_url" href="/homepage">Loading...</a>
</body>

(少なくともChromeから手動でログインする場合)入力のある別のフォームにリダイレクトします

 <FORM name="autologin" method=POST action="https://homepage/AccountSettings">
 <input type="hidden" name="Z" value="0,0">

refresh_urlPHP をプログラムで処理してリダイレクトする方法がわかりません/homepageまた、PHP にこの最後のフォームも送信させるにはどうすればよいですか?

編集

中間ページには次のメタタグもあります

<meta http-equiv="Refresh" content="0; URL=/vdesk/?langchar=en.iso-8859-1&amp;ui_translation=off&amp;gbrowsertype=">
4

3 に答える 3

0

投稿 (ユーザー名/パスワード) をキャプチャする場合、通常は次のように PHP を使用してページを読み込みます。

header("Location: /homepage");

しかし、あなたの例から、ログインを処理するためにクライアント側とサーバー側を混同しているようです。ここで簡単なコードを見てみましょう: http://php.thedemosite.co.uk/logincode.php 役立つはずです。

于 2013-09-20T18:55:17.203 に答える
0

次の 2 つのことを行います。

1) 「次のページ」に行きたい。これを行うには、メタ リフレッシュ タグを探し、ターゲット URL に移動します。単純な正規表現を使用して、メタ リフレッシュ タグの内容から URL を取得できます。

2) ログインしたことを次のページに認識させる必要があります。これが通常の Web アプリケーションの場合、元のリクエストに含まれる Set-Cookie: ヘッダーを解析し、送信する Cookie: ヘッダーに変換する必要があります。次のページをリクエストするときに一緒に。

次のページからさらにリンクをたどりたい場合は、クロスサイト リクエスト フォージェリ セキュリティ トークンを探す必要がある場合もあります。これは、多くの Web アプリケーション フレームワークがページ データに挿入するものであり、投稿時に防御するために提供する必要があります。特定のブラウザベースのセッション ハイジャック攻撃。

すべてのサイトでログイン後にメタ リフレッシュが行われるわけではないことに注意してください -- HTTP アプリケーションの資格情報は実際には標準化されていません (Web 認証ヘッダーは一般的に使用されないため)。 、HTTP Web ページのスクレイピングに頼るのではなく、これらのサイトに何らかのプログラム API があることを望んだほうがよいでしょう。

于 2013-09-20T23:33:17.187 に答える