- ベストアンサー
URLパラメータの表示を避ける方法とは?
- 遷移先のURLにパラメータを表示させたくない場合、どのようにすれば良いのでしょうか?詳細を解説します。
- URLパラメータを表示せずに情報を送信する方法を教えてください。これにより、セキュリティやデータの保護を強化することができます。
- パラメータの表示回避方法について教えてください。データの保護やセキュリティを考慮した方法を解説します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
お世話になります。 > 1つ目、javascriptをあまり使用した事がないのですが、onclickイベントの時に > ・fromタグにaction="b.asp"を書き込む > ・javascript内でdocument.フォーム名.action='b.asp';とする > これはどちらでも構わないのでしょうか? 前に投稿した時点では、javascript にて hidden フィールドに値を入れるつもりでやってたのですが 今回の方法ではその必要がなくなりました。 ちなみに、どちらでも同じです。 2つ目、3つ目は今回のソースを参考にして下さい。 このソースでやっていることは、ローカルマシンの中にある SQL Server 2000 の NorthWind データベースに接続して、Customers テーブルの値を取得し、 10 件毎に表示をしています。 最初のページになったら前へボタンを使えなくし、 最後のページになったら次へボタンを使えなくしています。 ※インデントを表示するため、全角空白 2 つでインデントしています。 実際に試される場合は 全角空白 2 つを タブなどに置き換えてください。 ■paging.asp <%@ Language=VBScript %> <% Option Explicit Dim connection Dim rs Set connection = Server.CreateObject("ADODB.Connection") connection.Open "Driver={SQL Server};Server=(local);Database=Northwind;Uid=test_sql;Pwd=test_sql;" Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT TOP 100 CustomerID, CompanyName FROM Customers ", connection, 1, 1 rs.PageSize = 10 Dim pageNumber If Request.Form("NowPageNumber") = "" Then pageNumber = 1 Else Dim buttomName buttomName = Request.Form("myButton") Dim nowPageNumber nowPageNumber = CInt(Request.Form("NowPageNumber")) Select Case buttomName Case "先頭" pageNumber = 1 Case "前へ" pageNumber = nowPageNumber -1 Case "次へ" pageNumber = nowPageNumber +1 Case "最終" pageNumber = rs.PageSize End Select End If If pageNumber > 0 Then rs.AbsolutePage = pageNumber End If %> <html> <head> <title><%=pageNumber %>/<%=rs.PageSize %> ページを表示しています。</title> </head> <body> <% If pageNumber > 0 Then Response.Write("<table border='1'>") Response.Write("<tr><th>CustomerID</th><th>CompanyName</th></tr>") Dim counter counter = 0 Do Until rs.EOF Or counter >= rs.PageSize Response.Write("<tr><td>") Response.Write(rs("CustomerID")) Response.Write("</td><td>") Response.Write(rs("CompanyName")) Response.Write("</td></tr>") rs.MoveNext() counter = counter + 1 Loop Response.Write("</table>") Else Response.Write("データはありません") End If rs.Close() %> </table> <form method="post" action="paging.asp"> <input type="hidden" name="NowPageNumber" value=<%=pageNumber %>> <input type="submit" name="myButton" value="先頭"> <input type="submit" name="myButton" <% If pageNumber = 1 Then Response.Write("disabled=true") %> value="前へ"> <input type="submit" name="myButton" <% If pageNumber = rs.PageSize Then Response.Write("disabled=true") %> value="次へ"> <input type="submit" name="myButton" value="最終"> </form> </body> </html>
その他の回答 (2)
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 > Request("page")がうまく機能していないっぽいです。 それは POST パラメータや GET パラメータでそもそも渡してないからでは。。。 Form タグの中に こんな感じで hidden フィールドをいれて <input type="hidden" name="page" value="0"> <input type="hidden" name="buttonName" value=""> Form タグの各ボタンから 以下の様な javascript を呼び出せばよいのでは。 <!-- <script type="text/javascript"> function postBack(pageNum, btnName){ document.フォーム名.page.value = pageNum; document.フォーム名.buttonName.value = btnName; document.フォーム名.submit(); } // --> </script> ボタンはこんな感じで <input type="button" value="先頭" onClick="postBack(0, 'start')"> サーバー側の判定ロジックはこんな感じで If IsNumeric(Request.Form("page")) Then If Request.Form("buttonName") = "start" Then '先頭ボタンの処理 Else If Request.Form("buttonName") = "back" Then '前へボタンの処理 End If End If
お礼
naganaga_001様 度々ご回答ありがとうございます。 教えていただいたやり方でチャレンジしてみたのですがダメでした。。 ボタンをクリックするとステータスバーに「ページでエラーが発生しました。」とでます。 いくつか質問させていただいてよろしいでしょうか? 1つ目、javascriptをあまり使用した事がないのですが、onclickイベントの時に ・fromタグにaction="b.asp"を書き込む ・javascript内でdocument.フォーム名.action='b.asp';とする これはどちらでも構わないのでしょうか? 2つ目、ボタン設置時の話ですが、 <input type="button" value="前へ" onClick="postBack(document.フォーム名.page.value, 'back')"> のような形で現在のページの値を取得する事はできるのでしょうか? できないのであればどうすればよいのでしょうか? あと、最終ページの取得方法もわかりません。 3つ目、変更する前まで記述していた「ObjRS.AbsolutePage = page」という行で「引数が間違った型、または許容範囲外であるか、競合しています。」というエラーになります。これは、pageの値が正しく取得できていないからなのでしょうか? 質問ばかりで申し訳ないのですが、よろしくお願いします。
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 自分の ASP 自身に POST したいという解釈で間違っていなければ 以下のような感じでできますよ。 ■postback.asp <% If Request.Form("PostBack") <> "" Then Response.Write("PostBack!!!") End If If Request.Form("PostBack2") <> "" Then Response.Write("PostBack2!!!") End If %> <html> <head><title>test</title></head> <body> <form name="testform" action="postback.asp" method="post"> <input type="submit" name="PostBack" value="PostBack" /> <input type="submit" name="PostBack2" value="PostBack2" /> </form> </body> </html>
お礼
naganaga_001様 ご回答ありがとうございます。 >自分の ASP 自身に POST したいという解釈で間違っていなければ >以下のような感じでできますよ。 まさにその通りです。自分自身にPOSTしたかったのです。 naganaga_001様にご教授頂いたおかげで、解決に一歩近づいたのですが、残念ながら私の力不足でまだ解決に至っておりません。 b.aspは表示のみのページなので、formタグのなかにhiddenで値を持たせ送信してみたのですが、ページ移動がうまくいきません。 formタグの中に、以下のような4つのボタンを設置しました。 <input type="submit" name="start" value="先頭"> <input type="submit" name="back" value="前へ"> <input type="submit" name="next" value="次へ"> <input type="submit" name="end" value="最終"> ページの判定は以下のような形にしてみました。 if IsNumeric(Request("page")) Then page = Cint(Request("page")) backpage = page - 1 nextpage = page + 1 else page = 0 end if if page = 0 or Request.Form("start") <> "" then page = 1 end if if page > 1 and Request.Form("back") <> "" Then page = backpage end if if page < ObjRS.PageCount and Request.Form("next") <> "" Then page = nextpage end if if page > ObjRS.PageCount or Request.Form("end") <> "" then page = ObjRS.PageCount end if ObjRS.AbsolutePage = page Request("page")がうまく機能していないっぽいです。 すいません、アドバイスお願いします。
お礼
naganaga_001様 ご回答ありがとうございます。 連絡が遅くなってしまいましたが、無事ページ間の移動を実現させる事ができました。 今回はソースまで提供していただき本当にありがとうございました。大変勉強になりました。 今後ともよろしくお願いします。