| Tripletail documentation | Contained in the Tripletail distribution. |
Tripletail::InputFilter::MobileHTML - 携帯電話向け HTML 用 CGI クエリ読み取り
$TL->setInputFilter('Tripletail::InputFilter::MobileHTML');
$TL->startCgi(
-main => \&main,
);
sub main {
if ($CGI->get('mode') eq 'Foo') {
...
}
}
以下の点を除いて Tripletail::InputFilter::HTML と同様。
携帯電話の機種毎の絵文字の違いに対応する為に、User-Agent を見て
機種を判別し、常に Unicode::Japanese を利用して文字コード変換を行う。
絵文字は Unicode のプライベート領域にマップされる。
プライベート領域の文字は、 UTF-8 にしたときは1文字4バイトとなるので、 DB 等に格納する際はサイズに注意する必要がある。 また、DB の Unicode 対応の範囲外となっている場合、文字化け等することが あるので、 UTF-8 文字列をバイナリとして DB に保存することを推奨する。 ( MySQL であれば、tinyblob/blob/mediumblob/longblob 型を利用する。)
セッションキーはクッキーでなくクエリから読み取る。
内部メソッド
Copyright 2006 YMIRLINK Inc.
This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself
このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。
Address bug reports and comments to: tl@tripletail.jp
HP : http://tripletail.jp/
| Tripletail documentation | Contained in the Tripletail distribution. |
# ----------------------------------------------------------------------------- # Tripletail::InputFilter::MobileHTML - æºå¸¯é»è©±åãHTMLç¨CGIã¯ã¨ãªèªã¿åã # ----------------------------------------------------------------------------- package Tripletail::InputFilter::MobileHTML; use strict; use warnings; use Tripletail; require Tripletail::InputFilter::HTML; our @ISA = qw(Tripletail::InputFilter::HTML); 1; sub _new { my $class = shift; my $this = $class->SUPER::_new(@_); $this; } sub decodeCgi { my $this = shift; my $form = shift; binmode(STDIN); my $newform = $this->_formFromPairs( $this->__pairsFromCgiInput); $form->addForm($newform); if(defined(&Tripletail::Session::_getInstance)) { # ããã§å¿ è¦ã«å¿ãã¦ã»ãã·ã§ã³ããã©ã¼ã ããèªã¿åºãã foreach my $group (Tripletail::Session->_getInstanceGroups) { Tripletail::Session->_getInstance($group)->_getSessionDataFromForm($form); } } $this; } sub _getIncode { # CCCãããUser-Agentããã®æ å ±ãåªå ããã my $this = shift; my $pairs = shift; my $CCC; for(my $i = 0; $i < @$pairs; $i++) { if($pairs->[$i][0] eq 'CCC' && $pairs->[$i][1]) { $CCC = $pairs->[$i][1]; splice @$pairs, $i, 1; # CCCãpairsããæ¶ã last; } } # æåã³ã¼ããæå®ããã¦ããããããä½¿ç¨ my $charset = $TL->INI->get('InputFilter' => 'charset'); if(defined($charset)) { return $charset; } if (my $charset = $TL->newValue($ENV{HTTP_USER_AGENT})->detectMobileAgent()) { return $charset; } if (defined $CCC) { $this->_getIncodeFromCCC($CCC); } else { 'auto'; } } sub _raw2utf8 { my $this = shift; my $str = shift; my $incode = shift; $TL->charconv($str, $incode => 'utf8', 1); } __END__
# vim:set sw=8 sts=8 ts=8 noet: