推奨:ASPでセッションオブジェクト変数を正しく使用する方法の解釈ASPを使用する人は誰でも、セッションオブジェクトが特定のユーザーセッションに必要な情報を保存し、ユーザーがアプリケーションのページ間でジャンプすると、セッションオブジェクトに保存されている変数がクリアされず、ユーザーがアプリケーションのページにアクセスするときにこれらの変数が常に存在します。プログラムの複雑さを減らし、プログラミングの効率を改善することができますが、多くの欠点もあります。
1。属性1。SessionId
SessionIDプロパティは、ユーザーのセッションIDを返します。セッションを作成するとき、サーバーは各セッションに対して個別のIDを生成します。セッション識別子は、細長いデータ型として返されます。多くの場合、SessionIDはWebページ登録統計に使用できます。
2。タイムアウト
タイムアウトプロパティは、アプリケーションのセッションオブジェクトのタイムアウト時間制限を数分で指定します。このタイムアウト期間内にユーザーがWebページを更新またはリクエストしない場合、セッションは終了します。
2。メソッド
セッションオブジェクトには1つの方法しかありません。これは放棄されます。放棄方法は、セッションオブジェクトに保存されているすべてのオブジェクトを削除し、これらのオブジェクトのソースを解放します。放棄メソッドを明示的に呼び出さない場合、セッションがタイムアウトしたらサーバーはこれらのオブジェクトを削除します。サーバーが現在のページの処理が完了したとき、次の例がセッション状態をリリースします。
<%session.abandon%>
iii。イベント
セッションオブジェクトには、セッションオブジェクトの開始とリリースが実行されるときに使用できる2つのイベントがあります。
1. SESSION_ONSTARTイベントは、サーバーが新しいセッションを作成するときに発生します。サーバーは、要求されたページを実行する前にスクリプトを処理します。 Session_Onstartイベントは、ページにアクセスする前に設定されているため、セッション変数を設定するのに最適な時期です。
セッションオブジェクトは、session_onstartイベントにリダイレクトまたはエンドメソッド呼び出しが含まれている場合に残りますが、サーバーはGlobal.asaファイルの処理を停止し、Session_onstartイベントをトリガーするファイル内のスクリプトをトリガーします。
特定のWebページを開くときにユーザーが常にセッションを開始するようにするには、session_onstartイベントでリダイレクトメソッドを呼び出すことができます。ユーザーがアプリケーションを入力すると、サーバーはユーザーのセッションを作成し、Session_Onstartイベントスクリプトを処理します。このイベントにスクリプトを含めるには、ユーザーが開いたページが起動ページであるかどうかを確認できます。そうでない場合は、response.redirectメソッドを呼び出すようにユーザーに指示してWebページを開始します。手順は次のとおりです。
<scriptrunat = serverlanguage = vbscript>
subsession_onstart
startpage =/myapp/starthere.asp
currentPage = request.servervariables(script_name)
ifstrcomp(currentPage、startPage、1)その後
Response.redirect(startPage)
endif
Endingub
</script>
上記のプログラムは、Cookieをサポートするブラウザでのみ実行できます。 CookieをサポートしていないブラウザはSessionIdCookiesを返すことができないため、ユーザーがWebページをリクエストするたびにサーバーは新しいセッションを作成します。このように、リクエストサーバーごとに、Session_Onstartスクリプトが処理され、ユーザーがスタートアップページにリダイレクトされます。
2。Session_Onendイベントは、セッションが放棄またはタイムアウトされたときに発生します。
セッションオブジェクトを使用する際に注意する必要がある問題については、前の記事を参照してください。
セッションは、次の3つの方法で開始できます。
1.新しいユーザーは、アプリケーション内の.ASPファイルを識別するURLへのアクセスを要求し、アプリケーションのGlobal.ASAファイルにはsession_onstartプロセスが含まれます。
2.ユーザーは、セッションオブジェクトに値を保存します。
3.ユーザーはアプリケーションの.ASPファイルを要求し、アプリケーションのGlobal.ASAファイルは<Object>タグを使用して、セッションスコープを持つオブジェクトのインスタンスを作成します。
ユーザーが指定された時間内にアプリケーション内のページを要求または更新しない場合、セッションは自動的に終了します。この期間のデフォルト値は20分です。アプリケーションのデフォルトのタイムアウト制限設定は、インターネットサービスマネージャーのアプリケーションオプションプロパティページにセッションタイムアウトプロパティを設定することで変更できます。この値は、Webアプリケーションの要件とサーバーのメモリスペースに従って設定する必要があります。たとえば、ユーザーがWebアプリケーションをブラウジングして各ページに数分間滞在したい場合は、セッションのデフォルトのタイムアウト値を短くする必要があります。過度に長いセッションのタイムアウト値は、あまりにも多くのオープンセッションを引き起こし、サーバーのメモリリソースを使い果たします。特定のセッションの場合、デフォルトのタイムアウト値よりも小さいタイムアウト値を設定する場合は、セッションオブジェクトのタイムアウトプロパティを設定できます。たとえば、次のスクリプトでは、タイムアウト値を5分に設定します。
<%session.timeout = 5%>
もちろん、デフォルトの設定よりも大きなタイムアウト値を設定することもできます。 session.timeoutプロパティは、タイムアウト値を決定します。また、セッションオブジェクトの放棄方法を介してセッションを明示的に終了することもできます。たとえば、テーブル内の終了ボタンを提供し、次のコマンドを含む.aspファイルのURLにボタンのアクションパラメーターを設定します。
<%session.abandon%>
共有:ASPがフォームの繰り返しの提出を防ぐ方法ユーザーは、ページを複数回リフレッシュする、バックキーを押すなど、フォームを送信する際にいくつかの予期しない状況に遭遇することがよくあります。制御測定が行われない場合、フォームの繰り返し提出の問題が発生します。この記事で導入された予防方法は、主に4つのサブルーチンで構成されています。比較的単純なアプリケーションでは、これらのコードを含まれているファイルに配置し、それらを直接参照するだけです。それらのために