2016-03-25 7 views
0

私はちょっと混乱しています。 私はウェブサイトにログインし、ログイン後にしかアクセスできないページからいくつかのHTMLを取得する必要があります。私はこれまでVisual BasicでIE Objectを使ってスクリプトを実行していましたが、それはとても遅いからです。それはちょうど私がどのように私はログインしてるかどうかをチェックするためにされたかわからない何<url>/j_security_check?j_username=username&j_password=pass のようなPOSTリクエストを使用してアクセスは簡単ですウェブサイトにログインして、ページからHTMLを取得

私のウェブサイトは、 はどのように作成されたセッションを使用してページに達し、 とどのようにするにはHTMLをフェッチする(ほとんどの場合JavaScriptで生成)

以前はログインフォームを作成したことがなく、セッションの仕組みがわかりません。私はまた、ヘッダーが必要であること、そして要求と応答がサーバーによって与えられるものについて何かを混同しています。

誰かがこれらの概念を学ぶために正しい方向に向けることができたら、私はそれを高く評価します。

+0

が、それは正しい方向にあなたを指している可能性があります:あなたはAJAXで<form></form>構造を使用している場合実際には、二次ページへの移動の彼らのデフォルトの動作を抑制しなければなりません。あなたの問題はoAuth2での状況とよく似ています.OAuth2の場合、javascriptで大量の作業が行われていました。応答が常にHTMLページだったので、必要なトークンを要求できませんでした。最終的に、問題のプロバイダは、ブラウザを使用してポストを介してデータを要求し、それをプログラム的に要求するための異なるアプローチをとった。 私が言うことは、プロバイダが認証のために別のアプローチを許可していないかどうかです。 – dambros

+0

私もお手伝いしましょう、あなたの問題は、あなたが得たhtmlが正しい(ログインした)かどうか(不正な資格情報)を知る方法であると思います。 私はブラウザでテストし、その違いを確認します。エラーが発生した場合のhtmlには、いずれかの検証エラーが含まれている必要があります。成功の場合は、おそらくdiv idを見ることができますが、それ以外の場合は表示されません。だから、あなたが戻って取得し、それらの値を検索するhtmlを確認するあなたが入っているかどうかを判断する – AAlferez

+0

私のコメントを続行するには:そのログインを投稿する場所によって異なりますが、答えが異なる可能性があります:はい、またはOK成功のためには、それはちょうどあなたに応答のHTMLコードを与えることによって新しいページにあなたをリダイレクトすることができます。 – AAlferez

答えて

2

SESSIONSをサーバのメモリ内の変数と考えてください。ユーザーのコンピュータに保存されたCookieとして保持されます。ここでは、2つの簡単で便利な説明があります:herehere

Here is a simplified code example PHPのログインシステムです。ログインが成功または失敗すると、(a)ユーザーを保護されたページにリダイレクトするか、(b)再び公開ページに戻って再試行します。 PHPコードでは、headers()メソッドを使用してリダイレクトするか、window.location.href="webpage.html";を使用してjavascriptでリダイレクトすることができます。上記の例では、jsメソッドを使用しています。また、Webページを保護して、一部のページをinsideに、一部をpublicにする方法も示しています。

PHPメソッドまたはJavaScriptメソッド(別のページにリダイレクトする)を選択するかどうかは、ユーザーからのログイン/パスワードの処理方法によって異なります。 HTMLフォームを使用する場合は、セカンダリページにデータをポストします。実際にそのページに移動してデータを処理し、何かを実行します。これはすべてPHPで行うことができます。

最近の最も一般的な方法は、同じページに残り(離れて移動しない)、セカンダリPHPページにデータのみを送信することです。そのページはユーザーデータ(id/pw)を受け取り、(あるいはそのPHPファイル内の変数だけ)に格納されているものと比較して、ECHOsのログインページに戻ります。応答はsuccess:関数内で受信され、次にjavascriptコードを使用してユーザーを内側のページにリダイレクトします。

元のページに残りながらセカンダリPHPページにデータを送受信することをAJAXといいます。それはかなり簡単です。 Here is a brief overview with some simple examples.私はあなたのサーバーにコードをコピーし、例を動作させることを強くお勧めします - それぞれがどのように動作するかを見るためにいくつか変更してください。


あるWebページから別のWebページにデータを送信するには、GETとPOSTの2つの方法があります。最も明白な違いは、GETメソッドは、あなたの質問に表示されているように、URLに変数/値を付加することによって動作することである:

POSTメソッドがより隠されている
<url>/j_security_check?j_username=username&j_password=pass 

- あなたが見るために、開発者ツールを使用する必要がありますデータ - それは好ましいです。

GETとPOSTはHTML形式で作成されており、ほとんどの人がすぐに2つを関連付けます。最近のAJAXでは、<form>タグはまったく必要ありません。私はこれがあなたの質問に答えないことを知っている

<form id="myForm" action="anotherpage.php" method="GET"> 
</form> 

$('#myForm').submit(function(event){ 
    event.preventDefault(); //suppress default form action 
    //Do some stuff 
    $.ajax({ 
     type: 'post', //this is where you now do the GET or POST 
     url: 'my_secondary_file.php', 
     data: 'varname=' + field_value_variable + '&nuthervar=' +nutherval, 
     success: function(d){ 
      if (d == 'whatever you echo from php') window.location.href = 'my_secret_page.php' 
     } 
    }); 
}); 
0

セッションはサーバー上に作成されます。 URL(この場合は<url>/j_security_check?j_username=username&j_password=pass)にヒットしたら、サーバーは資格情報を検証してセッションを作成する必要があります。おそらく、クッキーを使用し、セッションを作成しないで、そのセッションを管理するためにのみjavascriptを使用することができます。

関連する問題