携帯からのアクセス振り分け

2008/03/16 | ケータイ

携帯からのアクセスを振り分ける場合、やり方としては大きく分けて2つある。

お手軽なのはUSER_AGENT(ブラウザ)をみて振り分ける方法だ。新機種が出るごとに一応チェックの必要はあるのだが、まぁ一般的に使われている方法だ。

if(strstr($_SERVER[‘HTTP_USER_AGENT’],”DoCoMo”)){
  //ドコモ
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”Vodafone”)){
  //ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”SoftBank”)){
  //ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”MOT-“)){
  //ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”J-PHONE”)){
  //ソフトバンク
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”KDDI”)){
  //AU
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”UP.Browser”)){
  //AU
}elseif(strstr($_SERVER[‘HTTP_USER_AGENT’],”WILLCOM”)){
  //Willcom
}else{
  //PC
}

こんな感じか。ただしPCからのアクセスではブラウザのUSER_AGENTを書き換えてしまうこともできるので、そういう場合はたとえPCからのアクセスであっても携帯とみなされる。

別の方法として、アクセスもとのIPで判別する方法だ。こちらは$_SERVER[‘REMOTE_ADDR’]で判断する。IPアドレスは各キャリアのサイトで公表されているのでそこを参考にするわけだが、変更もあるようなのでこちらも時々チェックする必要があるだろう。IPアドレスが公表されているページは以下の通り。

ドコモ
ソフトバンク
AU
Willcom
イーモバイル

しかしまぁ、一番端末が多いドコモのIPアドレスが一番少なくて、一番端末数が少ないWillcomのIPアドレスが一番多いとは・・・(イーモバイルはちょっと例外ということで)。

こちらの難点は、たとえばi-mode simulatorなどのPCで携帯端末の画面表示をチェックするようなツールは使用できなくなることだ。これらのソフトはキャリアの回線を通らないので、当然IPアドレスが上記のようにはならない。

はてさて。どちらがいいのやら。
どうも最近いただいたコメントを読む限り、USER_AGENTをチェックして、キャリア判別だけでなく機種判別まできっちりやる必要があるようなのだが・・・。仕事の重要度と金額によるかな。
何も考えずにPEARの携帯判別ライブラリを使って「後は知りません」といってしまうのが、ある意味いいかもしれない(無責任モード)。

WordPress高速化プラグイン「wp-cache」のことで

2008/03/15 | SNS/CMS/ブログ

WordPressをよく使っている。サーバに依存する部分もあるかとは思うが、とにかく遅く感じる。いったんブログを開いてしまうとそこそこのスピード感があると思うが、数日ぶりに開いたりするととにかく重く感じる。理由はわからないけれど。

そこでキャッシュプラグインをインストールしてみた。
ダウンロードは以下のサイトから。
WP-Cache2

キャッシュを作成して高速化するわけだから、当然キャッシュのファイルが作成されるはず。でもってインストール手順でwp-content/cacheというディレクトリを作成して、そのディレクトリに書き込み権限を与えているのだから、その中にキャッシュファイルが作成されるのだから、ファイルはどんどん増えるはず。

ところが、キャッシュファイルが作成されない。つまり何の役にも立っていないわけだ。よくよく調べてやっとわかった。設定ファイルの書き換えで、書き換える場所を厳密に守らないといけなさそうだ。

このプラグインをインストールする際に、wp-config.phpを書き換えて以下の一行を加える必要がある。
define(‘WP_CACHE’, true);

この行を記述する場所が重要なのだ。どこでもいいだろうと、ファイルの最後に書いたりすると、それは動かない。少なくとも以下の行よりも上に書く必要があるのだ。

require_once(ABSPATH.’wp-settings.php’);

だから結果として以下のように記述した。
/* That’s all, stop editing! Happy blogging. */
define(‘WP_CACHE’, true); // 新しく追加した行

define(‘ABSPATH’, dirname(__FILE__).’/’);
require_once(ABSPATH.’wp-settings.php’);

これで無事キャッシュファイルが作成されることを確認した。多分これで動作しているはず。動作も早そう。

ちなみに正しく動作すると、出力されるHTMLの最後に以下のような行がつけられる(表示したブログのソースを確認してみればいい)。
<!– Dynamic Page Served (once) in 29.672 seconds –>
<!– Cached page served by WP-Cache –>

とりあえず・・・よかった。ただうまくいかないこともあるようなんだけど・・・。原因追求の必要ありだ。

ケータイフォームの文字入力指定

2008/03/14 | ケータイ

フォームの<input type=”text” />タグの入力方法で、PCの場合はスタイルシートを指定することでIMEを無効にすることができる。

style=”ime-mode:disabled;”

しかし携帯では当然のことながら上記の記述ではNGだ。スタイルシートが使えないからだ。しかし拡張属性があって、以下のように記述すれば指定ができる。

○全角(デフォルト)
istyle = 1
mode = hiragana

○半角カナ
istyle = 2
mode = hankakukana

○英字
istyle = 3
mode = alphabet

○数字
istyle = 4
mode = numeric

istyle属性はドコモとAUで、mode属性はソフトバンクで。両方で対応させたい場合は二つの属性を併記しておけばいい。

SQLiteの文字コード

2008/03/12 | SQLite

SQLiteなんて比較的新しいのだから言語なんてUTF-8で当然!、とか思っていたら全然そんなことないようだ。もちろんSQLiteは多言語対応しているが、SQLite ManagerではEUC-JPしか使えないようだ。
やっぱりUTF-8で使いたい訳なのだが、すでに有名どころな方がUTF-8を使えるようにしてくれていた。さすが。

よくきたblog

まず以下のリンクで必要ファイルをダウンロードする。
ファイル

そしてinclude/defined.inc.phpを修正する(下記の配列の14番目を追加)。

$availableLangue = array(  1=>’french’, 2=>’english’, 3=>’polish’,
        4=>’german’, 5=>’japanese’, 6=>’italian’,
        7=>’croatian’, 8=>’brazilian_portuguese’, 9=>’dutch’,
        10=>’spanish’, 11=>’danish’, 12=>’traditional_chinese’,
        13=>’simplified_chinese’,14=>’japanese_utf8′);

これだけでオッケー。言語の選択画面でいったんjapaneseを選択すると、以降の画面でUTF-8が選択できるようになった。
これでやっと目的どおりの環境になった。SQLiteは何がいいって、バックアップとるのが簡単。何しろ単なるファイルだからね。チャンスがあればこれからバリバリ使う予定だ。

SQLite Managerを試す

2008/03/11 | SQLite

いったんダメ出ししたSQLite Managerだったが、他に有用そうな管理ツールも見当たらなかったので、結局これを試すことにした。前回は希望通りに動いてくれなかったのだが・・・どうやら設定方法に問題があったようだ。設置方法をメモしておくことにする。

(1)ファイルのダウンロード
SourceForgeからファイルをダウンロードして解凍しておく。

(2)ウェブサーバにアップロード
解凍したファイルをアップロードする。SQLite ManagerはPHPで作られたウェブベースの管理ツールなので、ウェブからアクセスできるところに設置することが必要。

(3)パーミッション設定その1
SQLite Managerは自身でもSQLiteを使用している(設定内容等を保存)。よって内部で使用しているSQLiteデータベースファイルのパーミッションを設定する必要がある。
chmod 666 include/config.db
chmod 666 include/config3.db

(4)パーミッション設定その2
(3)だけでいいと思っていたら、どうもその上位のディレクトリも権限設定しておく必要があるようだ。
chmod 777 include/

(5)パーミッション設定その3
新しくデータベースを作成する場所もパーミッション設定が必要になる。たとえば../dir4db/にデータベースを作成したい場合は以下のように・・・。
chmod 777 ../dir4db/

これで設定は完了。あらためてブラウザからSQLite Managerにアクセスする。この状態で新規データベースを作成してみる。データベース作成の際には2箇所の入力が必要。

名前:管理用で使う名前(多分適当に何でもいい)
パス:実際に作成するデータベースのパス

たとえば名前は「testdb」パスは「../dir4db/testdb.sqlite」などと指定する。ちなみにバージョンは2と3を選択できるがここで注意が必要。素のPHP5ではバージョン2のデータベースしか扱うことができない。だからsqlite_open等の関数を使って処理したい場合はバージョン2を選んでおく必要がある。ちなみにバージョン3で作ってしまうと、以下のようなエラーが出てデータベースに接続することができない。

Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database

最後に「保存」ボタンをクリックすれば、データベースの作成は無事完了。ようやくSQLiteをまともに使うことができるようになった。使ってみるとこのSQLite Manager、なかなかよさげな感じ。とりあえず満足したので、これでいくことにした。最初からちゃんとマニュアルを読んで設置すべきだった・・・。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net