出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

NNでQueryStringの取得   ともぽんさん [2004/07/30 0:28:11] [4544]
  Re:NNでQueryStringの取得   Lightningさん [2004/07/30 11:44:31] [4545]
    Re:NNでQueryStringの取得   ともぽんさん [2004/07/30 14:42:00] [4548]
  Re:NNでQueryStringの取得   暇人さん [2004/07/30 13:01:11] [4546]
    Re:NNでQueryStringの取得   ともぽんさん [2004/07/30 14:38:39] [4547]
      Re:NNでQueryStringの取得   Lightningさん [2004/07/30 15:54:11] [4549]
        Re:NNでQueryStringの取得   Lightningさん [2004/07/30 15:58:21] [4550]
          Re:NNでQueryStringの取得   ともぽんさん [2004/08/02 10:21:54] [4551]

[4544] NNでQueryStringの取得
投稿者:ともぽんさん 2004/07/30 0:28:11
はじめまして。
現在NN4.7にてASPの開発を行っております。
エンコードしたURLで画面遷移を行うのですが、QueryStringが複数あり、IEでは取得できますが、&が&に変換されるせいか、NNだとうまく取得できません。
どなたか知恵を貸してください。

<a href="<%Server.HtmlEncode(http://www.XXX.co.jp?test=1&test=2)%>">TEST</A>

http://www.XXX.co.jp?test=1&amp;test2=2

取得後
test = 1
test2=""


[4545] Re:NNでQueryStringの取得
投稿者:Lightningさん 2004/07/30 11:44:31
> はじめまして。
> 現在NN4.7にてASPの開発を行っております。
> エンコードしたURLで画面遷移を行うのですが、QueryStringが複数あり、IEでは取得できますが、&が&amp;に変換されるせいか、NNだとうまく取得できません。
> どなたか知恵を貸してください。
>
> <a href="<%Server.HtmlEncode(http://www.XXX.co.jp?test=1&test=2)%>">TEST</A>
> ↓
> http://www.XXX.co.jp?test=1&amp;test2=2
>
> 取得後
> test = 1
> test2=""
解決案ではなく、代替案ですが・・・
Getで送信するのが必須だと使えませんけども・・・

<form action="http://www.XXX.jp" method="post" name="F1">
<input type="hidden" name="test1" value=1>
<input type="hidden" name="test2" value=2>
</form>
<a href="#" onclick="document.F1.submit();">test</a>

っていうのはどうでしょうか?
個人的にGet送信は嫌い(URLを書き換えられると厄介(−−;)なのでよくこの手のことをするんですが

[4548] Re:NNでQueryStringの取得
投稿者:ともぽんさん 2004/07/30 14:42:00
> > はじめまして。
> > 現在NN4.7にてASPの開発を行っております。
> > エンコードしたURLで画面遷移を行うのですが、QueryStringが複数あり、IEでは取得できますが、&が&amp;に変換されるせいか、NNだとうまく取得できません。
> > どなたか知恵を貸してください。
> >
> > <a href="<%Server.HtmlEncode(http://www.XXX.co.jp?test=1&test=2)%>">TEST</A>
> > ↓
> > http://www.XXX.co.jp?test=1&amp;test2=2
> >
> > 取得後
> > test = 1
> > test2=""
> 解決案ではなく、代替案ですが・・・
> Getで送信するのが必須だと使えませんけども・・・
>
> <form action="http://www.XXX.jp" method="post" name="F1">
> <input type="hidden" name="test1" value=1>
> <input type="hidden" name="test2" value=2>
> </form>
> <a href="#" onclick="document.F1.submit();">test</a>
>
> っていうのはどうでしょうか?
> 個人的にGet送信は嫌い(URLを書き換えられると厄介(−−;)なのでよくこの手のことをするんですが

コメントありがとうございます。

既存のシステムの仕様でQueryStringで渡すようになっていて・・・
困ってます。

でもHiddenで渡した方が確かですよね・・・

[4546] Re:NNでQueryStringの取得
投稿者:暇人さん 2004/07/30 13:01:11
> <a href="<%Server.HtmlEncode(http://www.XXX.co.jp?test=1&test=2)%>">TEST</A>

URLなのでURLEncodeで良いのではないでしょうか?
<a href="http://www.XXX.co.jp?<%Server.URLEncode("test=1&test=2")%>">TEST</A>

[4547] Re:NNでQueryStringの取得
投稿者:ともぽんさん 2004/07/30 14:38:39
> > <a href="<%Server.HtmlEncode(http://www.XXX.co.jp?test=1&test=2)%>">TEST</A>
>
> URLなのでURLEncodeで良いのではないでしょうか?
> <a href="http://www.XXX.co.jp?<%Server.URLEncode("test=1&test=2")%>">TEST</A>
>

> > <a href="<%Server.HtmlEncode(http://www.XXX.co.jp?test=1&test=2)%>">TEST</A>
>
> URLなのでURLEncodeで良いのではないでしょうか?
> <a href="http://www.XXX.co.jp?<%Server.URLEncode("test=1&test=2")%>">TEST</A>
>

実はURLEncodeを行う前に、Server.URLEncodeも行っています(..)
システムの仕様で遷移時にはどちらも使うようになっているんです。
IEでは問題ないのですが・・・

ちなみにエンコード後の
http://・・・・?test=1&amp;test2=2
から
Request.QueryString("amp;test2")としたら値が取得できました。
でも現実的でないので、困ってます。

URLEncode、HTMLEncodeで2重にエンコードすると、文字列として認識されちゃってるんでしょうか。

[4549] Re:NNでQueryStringの取得
投稿者:Lightningさん 2004/07/30 15:54:11
ん?・・・んん?

Server.HTMLEncodeってなってますけど、URLEncodeをしてるんですよね?
単に記述間違いじゃなくて・・・?

今、確認してみたところ
<%=Server.URLEncode(Server.HTMLEncode("test1=1&test2=2"))%><br>
<%=Server.HTMLEncode(Server.HTMLEncode("test1=1&test2=2"))%>
の結果は
test1%3D1%26amp%3Btest2%3D2
test1=1&amp;test2=2
でした。

<%=Server.URLEncode(Server.URLEncode("test1=1&test2=2"))%><br>
<%=Server.HTMLEncode(Server.URLEncode("test1=1&test2=2"))%>
の結果は
test1%253D1%2526test2%253D2
test1%3D1%26test2%3D2
でした。

ということでURLEncodeをしているつもりでHTMLEncodeしてませんか?

[4550] Re:NNでQueryStringの取得
投稿者:Lightningさん 2004/07/30 15:58:21
あ、もしかして、このリンクを吐き出す処理で既にHTMLEncodeをしていて、URLEncodeをすると&ampになるってことか(気付けよ私

まぁ、それでも、さっきの書き込みを見てもらえればわかりますけど


<%=Server.HTMLEncode(Server.URLEncode("test1=1&test2=2"))%>
の結果が
test1%3D1%26test2%3D2
なわけですから、いけると思うんですけど。

<%=Server.HTMLEncode(Server.HTMLEncode("test1=1&test2=2"))%>
の結果が
test1=1&amp;test2=2
になっているところから、URLEncodeとするところでHtmlEncodeしてる可能性が高いですね

[4551] Re:NNでQueryStringの取得
投稿者:ともぽんさん 2004/08/02 10:21:54
> あ、もしかして、このリンクを吐き出す処理で既にHTMLEncodeをしていて、URLEncodeをすると&ampになるってことか(気付けよ私
>
> まぁ、それでも、さっきの書き込みを見てもらえればわかりますけど
>
>
> <%=Server.HTMLEncode(Server.URLEncode("test1=1&test2=2"))%>
> の結果が
> test1%3D1%26test2%3D2
> なわけですから、いけると思うんですけど。
>
> <%=Server.HTMLEncode(Server.HTMLEncode("test1=1&test2=2"))%>
> の結果が
> test1=1&amp;test2=2
> になっているところから、URLEncodeとするところでHtmlEncodeしてる可能性が高いですね

うーん。うまくいきませんでした(@@)
サニタイジングが目的なので、しつこく遷移するごとにURLEncode・HtmlEncodeを行ってあるんですが、どうも画面遷移後にHtmlEncodeを行ってさらに次に遷移したときに文字列として認識してしまうみたいです。
なので、「&」に関してはHtmlecodeしないよう力技で応急処置してしまいました。

アドバイスありがとうございます。



TreeBBS For ASP V.0.1.3
Program By YasNet