FlashLiteについての情報がまとめられている「ん・ぱか工房」
    このエントリをはてなブックマークに登録

2007/12/13 木曜日 matsui Posted in Flash, 記事紹介・リンク | 2 Comments »

今回はFlashLiteに関する多くの情報がまとめられたサイト「ん・ぱか工房」をご紹介します。
Flashの他にも色々な技術情報が載っています。

→ ん・ぱか工房 トップ [saturn.dti.ne.jp]

特にこちらのページが役に立ちました。

→ ん・ぱか工房 Flash Lite 1.0/1.1メモ [saturn.dti.ne.jp]

ソフトバンク端末のFlash対応状況やバージョンは、公式サイトにも載っておらず、情報源が少ないため助かりました。
近日中に「ケータイスペック一覧ページ」のデータに反映したいと思います。




PHPでケータイからセッションを使う場合の設定方法
    このエントリをはてなブックマークに登録

2007/12/12 水曜日 matsui Posted in PHP, サーバ | 23 Comments »

今回は、ケータイ上からPHPのセッションを使う場合の設定方法についてです。

ケータイからPHPのセッションを機能を使う場合、端末によってはクッキーが利用できない場合があるため、そのままでは使うことができません。

セッションを使いたい場合は、インストール時のconfigureオプションに、「–enable-trans-sid」を付ける必要があります。
※Windowsの場合は特に設定の必要はありません。

また、「php.ini」の設定で、次のように設定してください。
※設定変更後はWebサーバの再起動が必要です

session.use_trans_sid = 1

もしくは「.htaccess」でも設定することができます。
※.htaccessでの設定上書きが許可されている場合のみ

php_flag session.use_trans_sid On

設定変更は、phpinfoで確認できます。

php_session01.gif

PHPのコード内で、

ini_set('session.use_trans_sid', '1');

でも設定できますが、その場合は「session_start();」より前に実行する必要があります。

 

設定が有効になると、リンクの後ろに自動でセッションIDが付加され、セッション変数が引き継げるようになります。
※ただしクッキーが使える端末で、「session.use_cookies On」の場合には、セッションの管理にはクッキーが優先して利用され、URLにセッションIDはつきません。

セッションIDが付加された例:

<a href="index.php?PHPSESSID=b37b5e8e31118c45e19a5fb6b70c215a">
トップへ
</a>

ページの移動に静的HTMLを挟んだり、引数をつけないでリダイレクトしたりすると、セッションは切れてしまいますので注意が必要です。

 

※セッションハイジャックに対する注意書きが足りないとのご指摘を受けましたので追記しました。失礼しました。

上記設定のままですと、URLに固定のセッションキーがついたままの状態のため、リンク先のページにRefererが漏れてしまったり、友達へメールでURLを転送した場合などに、セッションハイジャックされてしまう可能性があります。
そこで安全度を高めるために、次のような対応策を平行して行うと良いようです。

※再度ご指摘を頂きました。iモードの端末はRefererを出力しないので、その場合はRefererを原因としたセッションハイジャックは考慮しなくてもよいようです。

  1. クッキーを利用できる端末の場合は、そちらを利用する
  2. 端末IDによる認証+IPアドレス制限を行う
  3. session_regenerate_id関数を利用する

1については、auとソフトバンクの最近の機種ではクッキーが利用できます。
クッキーが利用できれば、URLにセッションIDを付加しなくてすみますので、URLからの漏洩を防ぐことができます。
セッションの管理にクッキーを優先して利用するには、「php.ini」または「.htaccess」で、「session.use_cookies On」と設定されている必要があります。

2の「端末IDによる認証+IPアドレス制限」については、まず.htaccessなどで、携帯キャリアのIPアドレスからのみアクセス可能な状態にします。
その状態でセッションに端末IDを格納し、アクセスの度に認証チェックを行うことでなりすましを防ぎます。
IPアドレスの制限をかけるのは、Refererが漏れている場合は、端末IDも同時に漏れているケースが多いためです。
端末IDはリクエストを偽造することで、なりすまされる可能性があるため、携帯実機からのアクセスのみとすることで安全度を高めます。

3の「session_regenerate_id関数」は、アクセスの度にセッションIDを変更するためのものです。
PHPのバージョンによって対処法が異なりますので注意が必要です。

まずPHP5の場合は簡単です。

PHP5でのセッションID再生成のサンプル

session_start();
session_regenerate_id(true);

session_regenerate_idの引数にtrueをセットすることで、古いセッションIDは破棄され、毎回新しいIDがふられます。

PHP4ではこの引数が利用できないため、古いセッションは破棄されず、同じことを実現しようとすると少し大変です。

PHP4でのセッションID再生成のサンプル

// セッション開始
session_start();

// 古いセッションを保存
$sess_tmp = $_SESSION;

// セッション変数を破棄
session_destroy();

// セッションIDを再生成
session_start();
session_regenerate_id();

// セッションを元に戻す
$_SESSION = $sess_tmp;

参考にさせて頂いたのはこちら[php.gr.jp]のページです。
欠点としては、アクセスの度にセッションファイルが作成されるため、ゴミファイルが残りやすいという点があります。

アクセスが多いサイトの場合は、ガーベージ・コレクションの設定をより頻繁にしたり、こちら[phppro.jp]こちら[ishinao.net]のやり方を参考にすると良いかも知れません。

なお、session_regenerate_id関数を使うと、毎回セッションIDが変わるため、通信エラーが起こった際にセッションが切れてしまう可能性があるようです。
利便性を重視するかセキュリティを重視するか、扱う情報の重要度に応じて使い分けると良いと思います。
(詳しくはコメント欄をご参照ください)

 

※追記分について、まだセキュリティ上問題があったり、何か他に良い方法がありましたら、ご指摘をお願いします




携帯サイト作りの基本がまとめられた「Perlで作るモバイルサイトのコツ」
    このエントリをはてなブックマークに登録

2007/12/11 火曜日 matsui Posted in 記事紹介・リンク | No Comments »

先日たまたまGoogleで検索していて見つけました。
有名なサイトなので、すでにご存じの方も多いかもしれませんが、まだ知らない方のためにご紹介します。

→ CodeZine Perlで作るモバイルサイトのコツ [codezine.jp]

 

ソフトバンクではなくVodafoneとなっていたり、少し情報が古い部分もありますが、役に立つ情報が多いです。
Perlをターゲットに書かれていますが、他の言語を利用している場合でも応用可能な情報が多数あります。

内容は次の通りです。

まだ完結とは書かれていませんが、第8回はあるのでしょうか?

 

関連:




「Google Chart API」をケータイから使ってみる
    このエントリをはてなブックマークに登録

2007/12/10 月曜日 matsui Posted in PHP | 1 Comment »

先日公開されたばかりの「Google Chart API」を、ケータイから使ってみようと思います。

「Google Chart API」とは、グラフを描画するためのAPIで、パラメータを投げるとGoogle側でPNG画像としてグラフを生成してくれるものです。

参考サイト:
→ Google Chart API Developer’s Guide [google.com]
→ PHPSPOT開発日誌 Googleのグラフ描画API「Google Chart API」 [phpspot.org]
→ 404 Blog Not Fount Google Code Chart – 折れ線グラフうぃざ~ど [livedoor.jp]

しかしながら、DoCoMoの端末はPNG画像が表示できないため、コンバートしてやる必要があります。
au, ソフトバンクに関してはそのままで大丈夫です。

 

GoogleChartサンプルPHPコード

<?php
// チャートのURL
$url = 'http://chart.apis.google.com/chart';
$url .= '?cht=p3&chd=s:hW&chs=250x100&chl=ke-tai|org';

// ドコモの場合のみ
if (preg_match('/^DoCoMo/', $_SERVER['HTTP_USER_AGENT'])) {
	// 画像を取得
	$resource = imagecreatefrompng($url);

	// ヘッダを出力
	header('Content-type: image/gif');

	// PNG画像をGIFに変換してストリーム出力
	imagegif($resource);
} else {
	// 通常通りPNG画像で表示
	header('Location: ' . $url);
}
?>

 

そのまま上記のPHPにアクセスしても良いですし、

<img src="[上記のPHPファイル名]" />

というように、imgタグで読み込んでも大丈夫です。

なお、パラメータ「chs」で画像の幅と高さを指定できますので、ケータイに合わせて、控えめな数値を設定してやる必要があります。

また、image関数を使用していますので、動作させるには、PHPセットアップ時にGDを使えるようにしておく必要があります。

変換には少しだけ負荷がかかりますので、アクセスの多いサイトであれば、キャッシュする仕掛けを作成した方が良いかも知れません。

google_chart.jpg
ドコモ端末からグラフを表示




GoogleAndroid用アプリの作成方法を紹介した記事
    このエントリをはてなブックマークに登録

2007/12/7 金曜日 matsui Posted in 記事紹介・リンク | No Comments »

Googleが、先日発表した携帯向けプラットフォーム「Android」。
@ITの記事で、そのAndroid用アプリの詳細な作成方法が紹介されています。

→ @IT Google Android用携帯アプリ作成のための基礎知識

Androidとは何かという基本的なことから、エミュレータのセットアップ方法や開発環境の整え方、開発に便利なツールの紹介まで、基本的な部分は全て押さえられています。
思ったより敷居は高くないようですね。

多額の賞金が出るコンテストもありますので、時間のある方はチャレンジしてみてはいかがでしょうか。

 

関連: