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

ASPのセッション管理に関する質問です。
仕事でASP(VBscript+SQL)を使ったサイトの構築をすることとなりました。
VBscriptもSQLも初心者です。

サイトの内容は会員制のページで、ログイン→トップページの流れまではできたのですが、セッション管理をしていないので直接URLをたたくとどのページでも開いてしまいます。

【ファイル構成】
login.asp・・・ID・パスの入力画面
login_check.asp・・・入力されたID・パスがDBにあるか確認、OKならindex.aspへ
index.asp・・・トップページ

ネットで調べたところ、「global.asa」や「セッション管理」と言った言葉がキーなのかとは思います。
以下の私の解釈で問題ないか、また疑問点にご回答頂けたらと思います。

?ログイン時にID・パスがDBにあった場合セッションIDを作成。
?global.asaにセッションIDの有無を確認する文を記載し、index.asp以降のコンテンツページに記載
?直接index.aspにアクセスしてもセッションIDがなければリダイレクトでlogin.aspに飛ばす。
※1 セッションIDの作成はlogin_check.aspでよいのか?
※2 セッションIDはDBに保存?それとも勝手にWEBサーバーに保存される?

簡単なサンプルを交えてご回答いただけると助かります。

●質問者: 雨の日
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●100ポイント ベストアンサー

セッションオブジェクトを利用するのが便利です。
http://msdn.microsoft.com/ja-jp/library/cc338731.aspx

global.asaはログイン/ログアウト関連の処理を記述するファイルなので、
セッション管理関係はglobal.asaに記述するということになります。


雨の日さんのコメント
ご回答ありがとうございます。 > セッション管理関係はglobal.asaに記述するということになります。 了解しました。1つ確信が持ててよかったです。

うぃんどさんのコメント
phpの利用経験があるみたいなので、 phpのセッション変数と同じような使い方ができると回答したほうが良かったのかも…。 セッションオブジェクトを利用する利点は、 セッションタイムアウトによる削除なども自動的に対応してくれる点です。 自前でデータベースなどに書き込むような仕組みを利用する場合は、 ログアウトせずにリンクが切れた場合の対処なども自前で用意する必要があり、 イベントタイマー的な仕組みについても学び、実装、管理運用しばなければならず面倒なのです。

雨の日さんのコメント
セッションオブジェクト利用して作ってみたいと思います。 ありがとうございました。

2 ● みかん
●0ポイント

コレクション内の特定の項目には、一意の文字列キー、またはその名前を使用してアクセスすることができます。たとえば、Contents コレクションは、Session オブジェクトに格納されたすべての変数を保持しています。また、Contents コレクションは、Server.CreateObject を呼び出してインスタンス生成されたオブジェクトもすべて保持しています。たとえば、次のユーザー情報を Session オブジェクトに格納したとします。
<%
Session.Contents("FirstName") = "Meng"
Session.Contents("LastName") = "Phua"
Session.Contents("Age") = 29
%>
この場合、各項目には、コレクションに項目を格納するときに関連付けた文字列キーを使ってアクセスすることができます。たとえば、次の式は文字列 "Meng" を返します。
<%= Session.Contents("FirstName") %>
項目に関連付けられたインデックス (番号) を使用して項目にアクセスすることもできます。たとえば、次の式は Session オブジェクト内で 2 番目に格納されている情報を取得し、"Phua" を返します。
<%= Session.Contents(2) %>
ASP のコレクションには、1 から番号が付けられています。項目に関連付けられたインデックスは、コレクションへの項目の追加やコレクションからの項目の削除によって変わることがあります。したがって、項目のインデックスが常に同じであると仮定することはできません。一般に、インデックスを使用したアクセスは、以下で説明するようにコレクション全体に対して繰り返し操作を行う場合か、または読み取り専用のコレクション内の項目にアクセスする場合に使用します。

省略記法を使用して、項目に名前でアクセスすることもできます。ASP は、オブジェクトに関連付けられているコレクションを一定の順序で探します。特定の名前を持つ項目が、あるオブジェクトのコレクションに 1 つしかない場合は、コレクション名を省略できますが、結果としてパフォーマンスが低下することがあります。
<%= Session("FirstName") %>
Application オブジェクトまたは Session オブジェクトに格納された項目にアクセスする場合は、通常、コレクション名を省略しても目的の項目に安全にアクセスできます。しかし、Request オブジェクトの場合は、コレクション名を指定する方がより安全です。これは、コレクションに重複した名前を持つ項目が含まれる可能性が高いためです。

関連質問

●質問をもっと探す●



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