蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

フレーム転送の罠

2005動物行動のデジタル映像コンテストのエントリーが終了、一般投票が始まった。ケンカというテーマで映像がそんなに集まるのか心配だったのだが、おかげさまで27件の作品が集まった。
さて、今日はその投票用のスクリプトを泥縄で作成した。おおまかな形は別サーバ上でだいぶ前に作っていたのだが、本番環境に移すにはかなり修正が必要だった。

アドレスバーに表示されるアドレスがおかしい

www.momo-p.comはフレーム転送サービスを利用していて、フレームの内部では別のサーバの内容が表示されている。このため、リンクの仕方を気をつけないといけない。まず、target="_top"を指定しないと、同じフレームに表示され続けるため、アドレスバーには元のアドレスが残ってしまう(result.phpを見ているのにアドレスはindex.htmlとなっていたりする)。また、ファイル名のみでリンクすると内部アドレスへのリンクになってしまうため、必ずhttp://からフルにアドレスを書く。これは単純に書きかえればよいのだが・・・

POSTできない?

上の事情により、formを使うときも、

<form action="http://www.momo-p.com/hoge.php" method="post" target="_top"> 

などと書いていたのだが、これではpostされたデータを受け取ってくれないようだ。フレーム転送の仕組み上仕方がないのだろうか?
フレーム転送を利用してサイトを構築する場合のノウハウを、一度調べてみないといけなそうだ。

接続元IPが取得できない?

去年はREMOTE_ADDRを使ってうまくいっていたのだが、今はこれだとサーバのアドレスになってしまう。HTTP_PC_REMOTE_ADDRを使えばよい?Mac OS X Serverではlocal proxyが効いているためらしい。

Firefoxでは動くのにIEで動かない!?

開発段階での動作チェックは、普段使っているFirefoxで行っていた。できたできた、と思ってIEでも一応チェックしてみるか、とやってみると、重複投票チェックが働かない。何回でも投票できてしまう。たまたまデバッグ用にcookieやPOSTされた変数を出力するようにしていたから気づいたが、cookieがブロックされる問題のためだった。

Firefoxでは動くのにIEで動かない!? その2

投票結果の表示と、投票は同じスクリプトを使っていて、POSTされるデータが0なら結果表示、4なら投票と区別していた。Firefoxではこれで動いていたのだが、IEの場合Session IDが同時にPOSTされてPOSTされる数が5になるため、投票できなかった。何故ブラウザによって違うの?

結局

これで一日つぶれてしまった。当初の予定では昼からハウルを見に行き、帰ってきてから作業をするつもりだったが、それでは間に合わないところだった。まあ何とかなってよかった。