• 締切済み

データ受け渡し時の維持

いつもお世話になっております。 現在A.aspからB.aspにデータを渡したいと考えているのですが、その間にユーザ認証の処理"C.asp"を入れているため、上手く渡りません。 Aで送ったデータをCが処理している間も持ち続け、Bに渡したいのです。Cはシステム上、他のファイルも参照するファイルなので、できればAもしくはBのみに手を加えることで解決したいと考えております。 現在の状況として、ユーザ認証直後は真っ白なBの画面が出て、再度Aに戻ってもう一度Bに飛ぶと認証済みのため、Aのデータ"hoge"がBにきちんと表示されます。 簡単で申し訳ありませんが、下記にソースを書きます。 何かお気づきの点があれば、ご教授ください。 宜しくお願い致します。 ※A.aspの内容 <% Response.Write "<a href=""B.asp?key=hoge""> B.aspへ</a>" %> ※B.aspの内容 <!--#include VIRTUAL="C.asp"--> <html> <head> <%Dim key2 key2 = Request.QueryString("key") %> </head> <%Response.Write url2%> </HTML> ※C.aspの内容 (長いので抜粋です) <%Option Explicit%> <%Response.Buffer = True Sub chkUser_Main() If chkUser_VerifyAuthorization() = False Then Response.Clear Session.Contents("LoginCaller") = Request.ServerVariables("SCRIPT_NAME") Response.Redirect "/login.asp" Response.End End If End Sub Function chkUser_VerifyAuthorization() chkUser_VerifyAuthorization = False Dim tUid, tPswd tUid = Session.Contents("SessionKey") tPswd = Session.Contents("Password") If (tUid = "") Or (tPswd = "") Then Exit ...続く

みんなの回答

  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.1

c.aspの内容をglobal.asaでsession_onstartに記入すればいいのでは? global.asa はb.aspを開こうとすると 自動で割り込んできます。 url文字列をセッションに入れて保持 私の作ったシステムでは、これを利用しました。 たとえば a.aspから b.asp?no=2153 へアクセスするリンクをクリック IISはSessionIDを持っていないと b.aspへ行かせずglobal.asaをとおります。 global.asaで session("url") = Server.URLEncode(Request.ServerVariables("SCRIPT_NAME")) という風にsessionにURLを入れて c.aspへredirect c.aspでIDなどの処理をして最後で response.redirect session("url") こうすることで継続させられます

参考URL:
http://labo.heisei-tech.co.jp/Www/Asp/11.htm
adat555
質問者

補足

早速のご回答ありがとうございます。 ご回答頂く前でしたので、global.asaはいじらず、単にsessionで渡したところ、A.aspからクリックし、ユーザ認証後B.aspにAからのデータが表示出来るまではいったのですが、今度はSessionが残ったままになり、A.asp内の他のリンクをクリックしてもBでは最初のSessionのデータが表示されてしまいます。 Session.abandonとすると、ユーザ認証のSessionまで消えてしまい、再度ログインするはめになっております。何か良い方法はありませんでしょうか。 また今回ご回答頂いた件ですが、初心者でよくわかっていないもので、大変恐縮ですが、もう少し具体的に書いて頂けると幸いです。 お忙しい中、申し訳ありません。

関連するQ&A

  • データ受け渡し時のSessionの使い方

    いつもお世話になっております。 現在A.aspからB.aspにデータを渡したいと考えています。 Sessionを用いてA.asp上のリンクからClickする箇所によって引数をかえて、Bに渡したいのですが、Aの最下層に書かれたSessionのみが渡る状態です。 (下記の例で言うと、どれをクリックしても333が表示されます。) 簡単で申し訳ありませんが、下記にソースを書きます。 何かお気づきの点があれば、ご教授ください。 宜しくお願い致します。 ※A.aspの内容 <% session("key") = "111" Response.Write "<a href=""B.asp""> データ1</a>" %> <% session("key") = "222" Response.Write "<a href=""B.asp""> データ2</a>" %> <% session("key") = "333" Response.Write "<a href=""B.asp""> データ3</a>" %> ※B.aspの内容 <html> <head> </head> <%Response.Write session("key")%> </HTML>

  • データの受け渡し

    A.aspで入力されたFormデータをGETで送信し B.aspで内容を判断し、C.aspまたはD.aspにデータを受け渡す。 という事を行いたいと考えています。 B.aspのソースは下記の感じです。 If Request.QueryString("Add") = "C" THen Response.Redirect "C.asp" Else Response.Redirect "D.asp" End If C及びDへデータを受け渡すには、どのようにしたらよいでしょうか? また、今回GETを利用していますがPOSTを利用して同様な事は出来るのでしょうか? よろしくお願い致します。

  • データーの受け渡し

    ASP1というフォルダーにA.ASPとB.ASPが入っていて ASP2というフォルダーにB.ASPが入っています。 B.ASPは両方とも同じ物です。 A.ASPの処理で条件に合ったらB.ASPそうでなければASP2のB.ASPを表示するような仕組みになっています。 この時にsessionを使ってユーザーID等を送っていますが、ASP2のホルダーのB.ASPでは画面は変わりますがデーターを受け取る事ができません。ファイル名を変えてASP1のホルダーに入れると正常に動作します。 IISの設定も関係あるのでしょうか? ASP1 A.ASP <% session("id")=uid if ab = 0 then %> location.href ="/ASP1/B.asp"; <% else %> location.href="/ASP2/B.asp"; <%end if %> B.ASP <% uid=session("id") %> ASP2 B.ASP <% uid=session("id") %> IIS5.0です  どなたかご教授お願いします。

  • VBScript

    現在ASPをもとにWebサイトを作成しています。 「Microsoft VBScript コンパイラーエラー(0X800A03F6) 'End'がありません。」と出るのですが、どこが原因なのでしょうか? <%@ LANGUAGE="VBSCRIPT" %> <% ' #################### ' ### データ送信用 ### ' #################### StrUsername = Request.Form("username") StrUruby = Request.Form("uruby") StrDatofbirth = Request.Form("dayofbirth") StrEmail1 = Request.Form("email1") StrEmail2 = Request.Form("email2") StrGender = Request.Form("gender") StrPostnumber = Request.Form("postnumber") StrAddress = Request.Form("address") StrTel1 = Request.Form("tel1") StrTel2 = Request.Form("tel2") StrSchool = Request.Form("school") StrFaculty = Request.Form("faculty") StrDepartment = Request.Form("department") StrSurvey = Request.Form("survey") StrComment = Request.Form("comment") StrDesiredjobtype = Request.Form("desiredjobtype") if username = "" then username = "未入力" end if if uruby = "" then uruby = "未入力" end if if dayofbirth = "" then dayofbirth = "未入力" end if if email1 = "" then email1 = "未入力" end if if email2 = "" then email2 = "未入力" end if if gender = "" then gender = "未入力" end if if postnumber = "" then postnumber = "未入力" end if if address = "" then address = "未入力" end if if tel1 = "" then tel1 = "未入力" end if if tel2 = "" then tel2 = "未入力" end if if faculty = "" then faculty = "未入力" end if if department = "" then department = "未入力" end if if survey = "" then survey = "未入力" end if if comment = "" then comment = "未入力" end if if desiredjobtype = "" then desiredjobtype = "未入力" <!-- ERRORカウンタの初期化 errnum = "" ' ### ' ### sqlインジェクション対策 ### ' ###] if errnum <> "" Then Response.Redirect "http://localhost/tesut/chkerr.asp?errnum="+ errnum End If <!-- パラメータ LIST = Array(username,uruby,dayofbirth,email1,email2,gender,postnumber,address,tel1,tel2,school,faculty,department,survey,comment,desiredjobtype) <!-- 検出項目(SQLコマンドで使用される特殊記号の検出) CHECK_1 = Array("<",">","&","'","+","-","*","/","%",";","--","(",")","\","""",",") <!-- ハンドリング要素 ERROR = Array("A","B","C","D") For j = 0 to UBound(LIST) tmpData = UCase(LIST(j)) For i = 0 to UBound(CHECK_1) If Instr(tmpData,CHECK_1(i)) > 0 Then errnum = errnum + ERROR(j) Exit For End If Next Next if errnum <> "" Then Response.Redirect "http://localhost/tesut/chkerr.asp?errnum="+ errnum End If <!-- POSTで遅れないのでセションに保存 Session.Contents("username") = username Session.Contents("uruby") = uruby Session.Contents("dayofbirth") = dayofbirth Session.Contents("email1") = email1 Session.Contents("email2") = email2 Session.Contents("gender") = gender Session.Contents("postnumber") = postnumber Session.Contents("address") = address Session.Contents("tel1") = tel1 Session.Contents("tel2") = tel2 Session.Contents("school") = school Session.Contents("faculty") = faculty Session.Contents("department") = deaprtment Session.Contents("survey") = survey Session.Contents("comment") = comment Session.Contents("desiredjobtype") = deairedjobtype Response.Redirect "http://localhost/tesut/check.asp" <!-- xssの記号検出処理 Function XssChk(Str) err = 0 If Instr(Str,"<") > 0 Then err = err + 1 End If If Instr(Str,">") > 0 Then err = err + 1 End If If Instr(Str,"&") > 0 Then err = err + 1 End If If Instr(Str,"'") > 0 Then err = err + 1 End If If Instr(Str,"""") > 0 Then err = err + 1 End If XssChk = err End Function %>

  • ページを一度更新しないとSession値が渡らない。

    ASPで初めてプログラムしています。 A.asp → Err.inc → Err.asp というように、エラーがあったらErr.aspに 遷移するようにしているのですが、 Err.aspで更新ボタンを押さないとSession値が表示されません。 具体的に *** Err.inc *** <% Sub COMM_USER_ERROR(strMsg)   session("ErrMsg") = strMsg   'システムエラー表示   Response.Redirect("Err.asp")   Response.End End Sub %> *** A.asp *** If Request.ServerVariables("REQUEST_METHOD") <> "POST" Then   Call COMM_USER_ERROR("不正なアクセスをしました") End If *** Err.asp *** <HTML>   (中略)   <%=session("ErrMsg")%> どうしたらよいか全くわかりません。 どなたか教えていただけないでしょうか? よろしくお願いいたします。

  • セッション

    セッションについて教えて下さい。 指定のID、パスワードでログインしようと思っています。 ソースを記載しますので、お教え下さい。 ID:aaa パスワード:111とします。 [送り側フォーム] <form action="/test2.asp" method="POST" id=form1 name=form1> <input type="text" name="id" value=""><br> <input type="password" name="passwd" value=""> <input type="submit" value="LOGIN" id=submit1 name=submit1> </form> とし、 [受け取り側、認証 test2.asp ] <% If Session("user_test") <> "1" Then Response.Redirect "/test.asp" Response.End() End If %>ここで認証を判断し、認証できなければtest.aspへもどるとし、 Dim id, passwd id = Request.Form("id") passwd = Request.Form("passwd") Session("user_login") = "id" Session("user_login") = "passwd" IF id = "aaa" and passwd = "111" THEN Session("user_test") = 1 Response.Write ("OK") ELSE Response.Write ("ちがうよ") END IF %> ID、パスワードをセッション変数にいれ、各ページで認証すると言う事をやりたいのですが、うまくいきません。 どこがわるいか、お教え下さい。 ※以前にも似たような質問をしているのですが、改善されずお手上げです。

  • ASPで画面間のパラメタ受け渡し

    こんばんは。ASP初心者です。 ASPでWEBページの作成を行っています。画面遷移をResponse.Redirect()で行っているのですが、遷移前のページと遷移後のページでパラメタを受け渡したい場合はSession("hoge") = "hogehoge"のようにセッションに入れる以外、何か方法はないでしょうか。リクエスト間でパラメタ渡せればがいいので、セッションを通じて保持しておく必要がないのです。クエリを使用するとアドレス欄に変数の値が見えてしまうのでできれば使いたくありません。

  • データの受け渡しについて

    ASP初心者です。宜しくお願いします。行いたい内容は、a.aspで入力したデータを、b.aspでORACLEに登録する処理と考えております。 下記のような入力フォームがあったとします。a.asp実行を行うと、下記のような画面イメージが表示されます。 図書名(図面名) 型式 分類コード テキストボックスa1 テキストボックスb1 テキストボックスc1 テキストボックスa2 テキストボックスb2 テキストボックスc2 ・ ・ ・ テキストボックスa10 テキストボックスb10 テキストボックスc10 各列に10個づつ入力フィールドが存在し、データが入力されている分だけORACLEに新規追加を行いたいと考えております。MAXは10行で設定しています。どのようにしたら良いか皆目検討がつきません。以上、宜しくお願い致します。

  • データの受け渡し

    A.aspのデータを B.aspに受け渡すのはどうしたら良いのでしょう教えて下さい。 TEXTBOXからのデータの受け渡しではないです。

  • データの受け渡しについて

    全くの初心者にHELPをお願いします。 A=日本 のようなデータがありまして、 VBでは Response.Write "<http://****.asp?country=" & A & ">" のような感じにすると指定のページにて country=日本といったように引渡しができていましたが、 ASPではどのようにやるのでしょうか? まったくわかっていないので質問自体が見当違いでしたらそれもあわせてご指摘ください。 .asp?以降が5%%E・・・みたいな文字化け(?)にならなくてもかまわないので教えてください。

専門家に質問してみよう