• 締切済み

Global.asaについて

すみません。お世話になります。 クラシックなほうのASPで、webを作りました。 のですが、ログイン管理を軽視してしたため、あとからつけたすことになりました。 で、誰がいつログインして、いつ抜けているのかの記録を取りたいのですが、調べたとことろ、Global.asaというものでできる様子。 Sub Session_OnStart で、 sCoString = "DBQ=" & Server.MapPath("XXX.mdb") & ";"・・・などのDBへの接続先を記述し、rs.AddNew とかで記録!というわけにはいかないのでしょうか? どうしたらこういったことが実現できるのか、教えていただけますでしょうか。もし参考になるサイトなどあれば、ご教授いただけると助かります。

みんなの回答

  • magtons
  • ベストアンサー率33% (1/3)
回答No.2

昔ASPをやっていたころは、global.asaはどうにも 信用できず、私は使用していませんでした。 ログインのログはログイン処理のところでログを書き出せばいいと 思います。ログアウトはWebアプリでは考えても無駄な気がしたので、 記録していませんでした。せいぜい、ログアウトボタンをつけて、 そのクリックの処理としてつければいいかな(ログアウト記録が ない場合もあるけど、まぁいいや)くらいに思っていました。 また、アプリケーションの実装にもよりますが、 Sessionの有無 == ログイン状態とも限らないので、OnStartで ログインしたと記録するのはまずい場合もある気もします。

arimasouitirou
質問者

補足

>また、アプリケーションの実装にもよりますが、 >Sessionの有無 == ログイン状態とも限らないので、OnStartで >ログインしたと記録するのはまずい場合もある気もします。 お返事遅くなってすみません。 なるほどーそうですかー。 ログインのログは簡単に取れるんですけどねー ありがとうございます。 また機会がありましたらお願いします。

回答No.1

ASP は 10年以上前にやったきりなので自信がない。 Global.asa 内でできることって制限が多かった気がする。 だから Session_OnStart ではセッションを開始した旨を記録するフラグ的なセッション変数を宣言。 Session("AlreadyRecorded") = 0 とか。 んでトップページ内で Session("AlreadyRecorded") が 0 なら DB に記録し、Session("AlreadyRecorded") を 1 にする。 とか。 んで終了時の記録は希望通りに行かないと思います。 ページ上に作った [終了] とかのリンクなりボタンをユーザーが明示的にクリックでもしないかぎり、ユーザーがユーザーの意思で使用を終えたタイミングをつかむことはできないでしょう。 ユーザーがページを開いたまま放っておいてもタイムアウトでセッションが切れますんで Session_OnEnd が実行されちゃいますし。 あんまりやりませんて。

arimasouitirou
質問者

お礼

お返事遅くなってすみません。 うむむー。 なるほどですねー。 もう少し考えてみる必要がありそうですね。 また機会がありましたらよろしくお願いします。

関連するQ&A

  • Global.asaについて

    お世話になります。 今回ASPを使用してアプリケーション開発をしております。 データベースに接続して、データを拾おうと思うのですが、そのデータベースへの宣言などをGlobal.asaでしようと試みている途中で止まってしまいましたので・・・ Global.asaはルートディレクトリにおいてあり、IISでの設定はセッションONになっております。 テスト的に実行するため、 <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart Application("test") = "" End Sub Sub Session_OnStart Application.Lock Application("test") = "ttt" Application.UnLock End Sub </SCRIPT> とGlobal.asaには記述してあります。 ASPには <% Response.Write test %> と記述してありまして、実行しますと「ttt」と表示されません。なにか間違っている部分はあるのでしょうか?

  • ASP VBS global.asa Session_OnStart内

    ASP VBS global.asa Session_OnStart内でサーバーの環境変数取得 教えてください。global.asa内で環境変数って取得できるのでしょうか? 今までglobal.asaファイル内で直接書いていた文言を、環境変数から取得する、 というプログラム修正をしなければならなくなりました。 まず、VBSファイルを作成して、環境変数を取得することはできました。 その内容でそのままglobal.asaに記述すると、おそらく、環境変数が正しく取得できません。 このおそらくというのは、エラーが表示されないのです。 ただ、取得できていないので、その後の処理でエラーとなります。 環境は、 IIS 6 Windows2003server です。 いろいろ調べているのですが、いい回答が見つからず。 そもそも、global.asa内で環境変数を取得できるのかも分からず。 お願いします。

  • Session_OnStartを見てくれなかったりする?

    【したいこと】 セッション開始時に global.asa内のSub Session_OnStartでApplication.Contents("AAA")="111"を実行させる。 【起きている現象】 アプリケーションの起動時(ファイルを編集したりした後)にのみ、Sub Session_OnStartもしくは、Sub Application_OnStartを辿る(←これもまちまち)が、 その後、ブラウザを全て閉じても、global.asaを通ってくれない。 Sub Application_OnStart Application.Contents("AAA") = "" Sub End Sub Session_OnStart Application.Lock Application.Contents("AAA") = "aaa" Application.Unlock Sub End こんなかんじです。 ASPファイルからもApplication.Contents("AAA")にアクセスしていると考えてください。 情報が少なくて申し訳ありませんが なにか思い当たることがあればお願いします。

  • oracleを利用できません。(global.asa利用)

    asp + oracle + oo4oをglobal.asaファイルを利用して プログラムを組むことになりまして、ネットでサンプルファイルを見つけまして 実行したところエラーになっていまいます。 サンプルは以下の通りです。 ----global.asa--- 'OO4O用の設定 <OBJECT RUNAT=Server SCOPE=Application ID=OraSession PROGID="OracleInProcServer.XOraSession"> </OBJECT> <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Session_OnStart 'OO4O用の設定(Net*8を使用してOracle8に接続する) Set Session("OraDatabase") = OraSession.DbOpenDatabase("sun151_ora803", "scott/tiger", Clng(3)) Set Session("OraDynaset") = Session("OraDatabase").DbCreateDynaset("select * from emp order by empno", Clng(4)) End Sub Sub Session_OnEnd Set Session("OraDynaset") = Nothing Set Session("OraDatabase") = Nothing End Sub </SCRIPT> ---global.asaここまで--- ---emp_o1.asp--- <%@ LANGUAGE="VBSCRIPT" %> <HTML> <HEAD> <TITLE>emp_o1.asp</TITLE> </HEAD> <BODY> <% '変数の設定 Dim OraDatabase Dim OraDynaset Dim OraFields Dim fieldNum Dim recNum Set OraDatabase = Session("OraDatabase")   ↑ここでエラーがでます。(line17) Set OraDynaset = Session("OraDynaset") --以下略 ---emp_o1.aspここまで--- エラーとして エラー タイプ Microsoft VBScript 実行時エラー (0x800A01A8) オブジェクトがありません。: '[undefined]' /rhc/emp_o1.asp, line 17 というのが出てしまいます。 VBとoracleの経験はあるのですが、aspは今回初めてです。 しょうもない質問かもしれませんが、どなたかよろしく お願いいたします。

  • IIS7でIIS6で動いていたASPアプリを動かしたい

    初めまして、santa51と申します 表題の通り、IIS7でASPアプリを動かしたいのですが、 動きません。 xpのIIS6では動いていました エラーの内容は Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver] ディスクまたはネットワークのエラーです。 /????/?????/login.asp, 行 109 となります 109行は 107 DBName="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("../cgi-bin/mydb/" & campany & "/master.mdb") 108 Set db=Server.CreateObject("ADODB.Connection") 109 db.Open DBName です。 確認がとれていることは 1.Server.Mappath("../cgi-bin/mydb/" & campany & "/master.mdb")は確実にあっています。 環境は vista business IIS7 access2003 です。 以上、よろしくお願いします santa51

  • aspが動きません(IIS7、access2007の設定?)

    win2K,access2Kで作成したASPプログラムですが、そのままwinxp, access2003までは問題なく動いていました。 vista(ultimate),access2007ではエラー(HTTP500内部サーバエラー)となります。いろいろと調べましが、うまく動きません。 記述内容は以下のとおりです。 filename=Server.MapPath ("./") & "\data.mdb;" odbcConect="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & filename Set db = Server.CreateObject("ADODB.Connection") db.Open odbcConect アドバイスをよろしくお願いいたします。

  • Session_OnEndイベントスクリプトが処理されない。。。

    いつもお世話になってます。 今、ログイン数のカウンタ表示をしようとしているのですが、 global.asaの Session_OnStart内でログインカウンタをインクリメント。 Session_OnEnd内でログインカウンタをデクリメントしてます。 ところが、ログインした時は正常にインクリメントされているのですが ログアウトしてもデクリメントされません。 (単なる来訪者カウンタになってます。。。) 閉じるボタンやSession.AbandonをきっかけにSession_OnEndイベントを処理するものだと思っていたのですがうまくいきません。 どなたか良い方法を教えていただけないでしょうか。 よろしくお願いします。

  • ソートの設定

    ASPでアクセス97を使って品番、納期という順番に表示させたいのですが うまくいきません。 SQL文を使って品番順にはならんだのですが、納期がばらばらになってしまいます。どうしたら品番、納期順という並びになるか教えて下さい。 Dim Conn,SQL,RS xxxx=server.mappath("*****.mdb") DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & xxxx Set Conn = Server.CreateObject("ADODB.Connection") Conn.open DBName SQL = "select * from ******" SQL = SQL & " order by 品番 asc" set RS = Server.CreateObject("ADODB.Recordset") RS.Open SQL, Conn,3,3

  • VBSの中で書くSQL文の記述方法

    よろしくお願いします。 select * from db1 into id,password,date,name where db1_id = **** and db1_password = **** and db1_date = 99999999; (db1_id,db1_password,db1_dateがプライマリキー) db1という表からプライマリキーに該当したデータを取り出し、 変数に格納したいと思っています。 このSQL文をASPのVBSの中で実現する方法を教えてください。 <% Dim Conn,SQL,RS Dim id Dim password Dim date Dim name db1=server.mappath("db1.mdb") DBName="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & db1 Set Conn = Server.CreateObject("ADODB.Connection") Conn.open DBName SQL = "select * from db1" INTO = "into id,password,date,name" WHERE = "where db1_id = **** and db1_password = **** _ and db1_date = 99999999" SQL = SQL & INTO & WHERE & ";" Set RS = Server.CreateObject("ADODB.Recordset") RS.Open SQL, Conn,3,3 %> これでうまくいくかな~と思ったのですが・・・。

  • ログ書込機能を追加したいが、効率的に行いたい

    現在、ASPで作成しているシステムがあります。 ・最初にログインページがある ・ログイン後の画面はフレームで別れている ・メニューからの画面遷移はJavaScriptにより  frame src を変更することにより実現している。 ・メニューから遷移できる画面数は200画面ほど このシステムにログ機能をつけることになりました。 ログはメニュークリック時(画面表示しただけ)で良く、ログにはセッションIDやそれぞれの画面に設けているプログラムIDを記録します。 ログ出力はDBに、ActiveXDLLにて実現 (ASPからは必要情報を引数で渡して関数呼び出しするだけ) この条件で、各画面ごとにログ出力関数呼び出しをいれずにシンプルな変更で済ませたいと思っています。 いい方法はないでしょうか? global.asaではログインの時のみしか記録できないですよね?

専門家に質問してみよう