仕事で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サーバーに保存される?
簡単なサンプルを交えてご回答いただけると助かります。
セッションオブジェクトを利用するのが便利です。
http://msdn.microsoft.com/ja-jp/library/cc338731.aspx
global.asaはログイン/ログアウト関連の処理を記述するファイルなので、
セッション管理関係はglobal.asaに記述するということになります。
コレクション内の特定の項目には、一意の文字列キー、またはその名前を使用してアクセスすることができます。たとえば、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 オブジェクトの場合は、コレクション名を指定する方がより安全です。これは、コレクションに重複した名前を持つ項目が含まれる可能性が高いためです。
オンラインでの処理は複雑ですので、セッション管理をクリアしても多様な問題が出てきます。業務処理に重点を置くためには環境面での仕組みが用意されているフレームワークにアプリを組み込むのが得策です。
老婆心まで
おっしゃる通りだと思いますが、諸事情でASP.NET等ではなくASPで構築することになっています。
ちなみにASPでもフレームワークは提供されているのでしょうか?
ASP.NET等でしたら検索で見つかったのですが・・・・
Active Server Pagesですね。
無頼庵(id:wild_yamato)さんの話題は、
Application Service Providerとの勘違いではないでしょうか?
回答No.2は私の回答したリンク先の文章をコピペして回答に見せかけてますね。
無料質問のほうに答えるほうが多い私としては、
ポイントを掠め取られるのはさほど気にしてませんが、
同じようなことを繰り返している人は許せませんね。
200回ほどありますね。
5分程度ならかぶることもありますが、今回などはおよそ2時間後ですね。
そのほかにも多数ありますね。全部偶然だと言い張るのは難しいと思います。
http://q.hatena.ne.jp/sanada33/