[PHP-users 34100] Re: URIに#を付けるとQUERY_STRINGが渡らない
HOTTA Michihide
hotta @ net-newbie.com
2008年 10月 29日 (水) 19:24:37 JST
堀田@長崎市です。
On Wed, 29 Oct 2008 17:29:00 +0900
"KOYAMA Tetsuji" <koyama @ hoge.org> wrote:
Subject: [PHP-users 34099] Re: URIに#を付けるとQUERY_STRINGが渡らない
> 小山です。ご無沙汰しています。
ぽすぐれ温泉合宿の際はどうもでした。
> 2008/10/29 HOTTA Michihide <hotta @ net-newbie.com>:
> > URI に '#' が含まれる場合、QUERY_STRING が取れないようなのですが、
> > どう表記すればいいでしょうか?
>
> next.php?hoge=fuga#tag
>
> ならば # より手前の URL を取得して、 tag にジャンプしてくれますね。
>
> next.php#tag?hoge=fuga
>
> だと "tag?hoge=fuga" をアンカー名だと解釈するのかな?
これでうまくいきました。。。と一瞬思いましたが、これだけではこち
らで想定する動作にはなりませんでした。
というか、そもそも、私が質問の際に提示した例が不適切でした。
以下のような感じで、リンクの際のクッションページを作ってました。
$ cat index.html
<html><body>
<a href="next.php?uri=http://localhost?hoge=fuga">#なし</a><br />
<a href="next.php?uri=http://localhost#tag?hoge=fuga">#つき</a><br />
<a href="next.php?uri=http://localhost?hoge=fuga#tag">#を末尾に</a><br />
</body></html>
これで uri に http://localhost#tag が入ってきたら、
<a href="http://localhost#tag">$_GET['hoge']</a>にジャンプします
# 良い子は入力文字列の妥当性を(ry
みたいな出力を想定していました(fugaは実際は日本語文字列)。
ところがよく考えてみると、uri の末尾の #タグはブラウザが解釈する
ものであって、サーバ側には渡されないみたいですね。これじゃ取れな
いはずだ。
仕方がないので、'#tag' の '#' 以外の部分を別の変数で渡してやって、
php 側で # をくっつけて uri を生成してやるようにしました。
<a href="next.php?uri=http://localhost?hoge=fuga&tag=tag">
タグ付きバージョン</a><br />
どうもありがとうございました。しょうもないオチですみません。
--
HOTTA Michihide <hotta @ net-newbie.com>
PHP-users メーリングリストの案内