携帯やらPCのブラウザやらでWebサイトを見る場合、
HTTPというプロトコルでやり取りをして
その結果を人間にわかりやすいようにグラフィカルに表示をしている。

そのやり取りには当然ルールがあって、
そのルールに従って
「○○ってページをちょーだい~」
「OKこれだよ~」
みたいなやり取りを意識しなくても裏で勝手にやっている。

で、Locationとはその中の一つで
Locationレスポンスヘッダフィールドなんて言ったりするが
役割は、
「○○ってページをちょうだい~」
「ここじゃなくて、××に取りに行ってね」<これ
こんな返事のことだ。

で、phpで書くなら
header(“Location: http://xxxxxx/”);
みたいな感じ。

このURLは、RFC的には絶対URLでなければならないと定義されているが、
IEやFirefoxなどは相対URLでも動く。

通常、開発作業をする場合、
・ローカルネットワーク内の開発サーバ
・携帯で確認するためのインターネット上の開発サーバ
・本番サーバ
最低、この3つの環境がある。
本番サーバの前に、デザインチェックのためのUPサーバが入ることもある。

当然、各環境のURLが違う。
Locationさせようとするとその辺りに気をつけなければならないし
絶対URLじゃなきゃダメという仕様を知らないと、
確認環境やほとんどの携帯で動いてしまうため気づかずに使ってしまうことがある。

実際に手元にある端末でテストしてみると、
auの、Win系、A系
Vodafoneの、P系、3GC系
DoCoMoの、FOMA90x系、FOMA70x系
それぞれ相対パスであっても正常にリダイレクトしてくれる。
(「正常に」ではないのかな・・)

でも、
DoCoMoの50x系は、SO505iSとP506iCは動いたが
F505iGPSとN503iは動かずに、
「無効なデータを受信しました」
という、端末のメッセージが出る。

502系などはそろそろ対応端末から締め出されつつあるが
505,504,503系はまだまだ現役感がある。

ちなみに、SSLのページ内でリダイレクトする場合、
P506iCなどは、毎回メッセージがでるのでうざったかったりする。

Locationは、ダブルポスト防止や、
PC/携帯のページ振り分けに使うことがよくある。
最近、新人くんやバイトを開発に使うようになってきたので、
ソースチェックをしっかりしないと
うっかり相対パスで書いてあって、いらぬトラブルを起こしそうだ。

htmlのinputタグには、maxlengthという属性を指定できる。
閲覧者が入力するサイズを制限することが出来るものだ。

明らかに文字数が固定の場合、たとえば郵便番号や電話番などや
あまり長い文字を入力されると困るフィールドに指定することが出来る。

この「サイズ」というのが曲者だ。
大抵のPC用ブラウザや、au、Vodafoneでは、サイズとは文字数になる。
DoCoMoだけ違う。

作ろうiモードコンテンツ HTML INPUTタグ
http://www.nttdocomo.co.jp/service/imode/make/content/html/about/input.html

> maxlength=”最大文字数”
と、書いてある。

これを見てどう思うのだろうか?
文字数とは、一般的な感覚で文字数と書いたら
全角だろうが、半角だろうが1文字は1文字だろうと考えるだろう。
でも、違うらしい。

例えば
<input type=”text” name=”a” value=”" maxlength=”1″ />
1文字しか入力して欲しくないテキストボックスにこう書いてしまうと、
全角入力が出来なくなってしまう。

かといって、バイト数でもない。
このテキストボックスには半角カナなどを1文字入力することは出来る。

半角文字を1とした文字幅とでも言えばいいのか。そんな仕様だ。
知らないで文字数指定をしてしまうと、入力できないなんてことも発生してしまうだろう。

もっとも、あくまで入力チェックは、受け取った側のプログラムでするべきだが、
ユーザビリティ的には指定してあげた方が親切だと思う。
でも、その親切心があだになる場合もあるかもしれない。