URLパラメータの表示を避ける方法とは?

このQ&Aのポイント
  • 遷移先のURLにパラメータを表示させたくない場合、どのようにすれば良いのでしょうか?詳細を解説します。
  • URLパラメータを表示せずに情報を送信する方法を教えてください。これにより、セキュリティやデータの保護を強化することができます。
  • パラメータの表示回避方法について教えてください。データの保護やセキュリティを考慮した方法を解説します。
回答を見る
  • ベストアンサー

遷移先のURLにパラメータを表示させたくない。

検索画面を作成しております。 検索画面:a.asp 表示画面:b.asp のような形です。 a.aspからb.aspにPOSTで送信します。 b.aspの表示で検索結果の該当件数が多いときは1ページに表示させる行数を10行くらいにしたいと思っております。 そこで、先頭・前へ・次へ・最終などのリンク(ボタンでも可)を作ります。 この時、各ページへの移動時に「b.asp?xxx=yyy」などの表示にしたくないのですが可能でしょうか? 可能であればどようのうにしたら良いのでしょうか? 送信する情報量が多いのですが、パラメータは送信できる情報量に限界があると聞いたことがあります。 どなたかご教授下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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>

searching
質問者

お礼

naganaga_001様 ご回答ありがとうございます。 連絡が遅くなってしまいましたが、無事ページ間の移動を実現させる事ができました。 今回はソースまで提供していただき本当にありがとうございました。大変勉強になりました。 今後ともよろしくお願いします。

その他の回答 (2)

回答No.2

お世話になります。 > 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

searching
質問者

お礼

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の値が正しく取得できていないからなのでしょうか? 質問ばかりで申し訳ないのですが、よろしくお願いします。

回答No.1

お世話になります。 自分の 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>

searching
質問者

お礼

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")がうまく機能していないっぽいです。 すいません、アドバイスお願いします。

関連するQ&A

  • URLのパラメタの表示方法を変えてSEOに効果的?

    パラメタがURLに含まれているようなページは検索されずらいですが、↓のような方法でURLの表示の仕方を変えると検索されやすくなりますか?ロボット検索エンジンはパラメタと受け取りますか? http://plaza.rakuten.co.jp/pgmemo/diary/20051110 … こちらのサイトでは1)を2)に変える方法が紹介されていました。 1) http://shinno.net/phpsample/pathinfo.php?a=123&b … 2) http://shinno.net/phpsample/pathinfo2.php/123/456/

    • ベストアンサー
    • PHP
  • GETで渡されたパラメータを遷移後のASPで有効にする

    こんにちわ。社内の書籍管理システムを作るようにいわれてしまい悪戦苦闘しております。どうかお手を貸してください。 最初のASPでFormで複数選択したパラメータを、GETで次のASPへsubmitして、遷移後のASPのページにあるカテゴリのcheckboxに、最初のASPで選択した項目にチェックをいれて表示させたいと考えております。 何かいい方法はございませんでしょうか。

  • 表示されているレコードを1つ上にする

    環境:ACCESS2003&XP Pro テーブルとそのテーブルをソースにしたクエリーを元に一覧形式のフォームを作成しています。以下のようなイメージです。 品名  仕様  数量 単価 合計  A   xxx xxx xxx xxx ↑  b   yyy yyy yyy yyy ↑  C   zzz zzz zzz zzz ↑ *↑はボタン 上記の表示で↑ボタンをクリックすると 表示されたレコードがひとつ上に行く方法が わかりません。 よろしくお願いします。 例:上記で品名bの↑ボタンをクリック 品名  仕様  数量 単価 合計  b   yyy yyy yyy yyy ↑  A   xxx xxx xxx xxx ↑  C   zzz zzz zzz zzz ↑

  • リンク先にパラメータを渡す方法

    よろしくお願いします。 現在、複数ページにリンクボタンがあり、これを押すと別ウィンドウでページAが開くようになっています。このリンクボタンからページAにパラメータを渡すことで、押すリンクボタンによってページA内の一部の文章が変わるようにするには、どうすればいいでしょうか? たとえば、「Bについて」というリンクボタンを押すと、ページAの一部のテキストも「Bについて」を表示されるようにしたいです。

    • ベストアンサー
    • CGI
  • httpsへの強制遷移の方法

    現在作っているページが http://www.xxx.com/yyy/index.php という独立したページです。 直接アクセスして閲覧してもらうようなページで http://www.xxx.com/ とはなんら関係ない内容です。 このページにはお問い合わせフォームもあるため実際には https://www.xxx.com/yyy/index.php で動作させるのですが、URLを手入力する人は「http://・・・」と間違うかもしれません。そこで、「http://・・・」で入力したら強制的に「https://・・・」に遷移(変換?)するにはどのようにしたらよいのでしょうか。 こういったことに不慣れのため、皆さんの回答をいただくためにどのような情報を用意すればよいのかわかりませんが環境は以下の通りです。 PHP4使用 サーバーはラピッドサイト ポート番号の445とか446は付いてません。

    • ベストアンサー
    • PHP
  • DataGrid-ButtonColumnでデータのないところはボタン無にしたい

    毎々、お世話になります。 ASP.NETでDataGridにバイドさせるデータが以下だとします。 "XXX","A","","XXX","" "YYY","","","YYY","B" (1レコード5カラムのデータが2レコード) これをDataGridで XXX [A] "" XXX [ ] YYY [ ] "" YYY [B] ([ ]がbuttonColumnです) で、問題なのが、データのないButtonColumもクリックできてしまうことです。 データのないカラム(セル)は、buttonを無効にすることはできないでしょうか? いろいろ書籍やネットであさってみてもわからないのもので。。。 どうか、よろしくお願いいたします。

  • パラメータ表示

    a,bを実数として、 x=cos(at)/cos(bt) 、 y=cos(at)/sin(bt) とパラメータ表示したとき、どのような曲線になるでしょうか。 a=b=1のときとか、具体的な場合でもいいのでどのような曲線か知りたいのですが・・・。 アドバイスをお願いします。

  • パラメータの渡し方

    画面Aを開くとき、画面Xから開いたのか画面Yから開いたのかがわかるように画面A側でパラメータを受け取りたいです。 (そのパラメータによって色々と処理を分岐させたい) Formのロードやコンスタクトは引数がないわけですが、パラメータが1個あるメソッドとしてオーバーロードして、PUBLICな変数にパラメータを入れておいて、Loadが走ったあとはその情報をみて色々処理を分岐させるなどをすればいいのでしょうか? (もっとスマートな方法があるような気がしています。) 宜しくお願いいたします。

  • URLのパラメータが正しくありません

    これまで購読していたメールマガジンを配信停止にしたいため、マガジンの最後にある「配信停止はこちらから」をクリックして、配信停止画面にリンクさせ、その画面には、私のアドレスが正しく表示されていましたが、その下の「配信停止します」のボタンをクリクすると、次に切り替わった画面に「エラーが発生しました」「URLのパラメータが正しくありません。URLをご確認の上再度接続をお願いします。」と表示され 購読解除ができません。  メールソフトはOE6.0、ブラウザはIE6.0更新ヴァージョンはSP2です。  どうすれば、このメルマガの配信停止が可能になりますか。  この前に、別のメルマガも、配信停止の手続きをしましたが、こちらは、すぐに、配信停止のお知らせメールが送信されてきました。    

  • データベースの移動について

    お忙しいところ申し訳ありませんが、ご教示お願い致します。 Aサーバ(xxx.xxx.xxx.xxx)のDB(A_DB)を Bサーバ(yyy.yyy.yyy.yyy)のDB(これをB_DBとしたい)に コピーをしたいと考えております。 AサーバのA_DBの情報(レコードも含む)をBサーバにB_DBとしてコピーしたいですが、よくわかりません。。。 ご存知の方いらっしゃいましたらお手数ですがご教示下さいm(_ _)m

専門家に質問してみよう