PHP 2006/12/23 00:48
Flash Lite1.1とPHPセッションの連携
Flash Lite1.1では起動時にSWFに値を渡す方法(URLパラメータやparamタグ)が使えないようなので、SWFにセッションIDを渡すことができません。
そのためloadVariable()等でサーバと通信できても、セッションが特定できないので、ユーザを識別するようなアプリケーション(ゲームや会員向けサイト等)には使えませんでした。
そこでSWFにセッションIDが渡せないならばと、URLにセッションIDを含める方法を考えました。
つまり
-
<a href="/path/to/hoge.swf?PHPSESSID=phpsessid">SWF</a>
を
-
<a href="/path/to/phpsessid/hoge.swf">SWF</a>
とするわけです。
ファイル構成
以下のようなファイル構成を想定しています。
[/path/to]
+ .htaccess
+ user.swf < --- SWF
+ index.php <--- セッション開始PHP
+ user.php <--- ユーザデータ出力PHP
処理の流れ
おおまかな流れです。
- index.phpでセッション開始
セッションIDを含めたURL[/path/to/phpsessid/user.swf]を生成 - [/path/to/phpsessid/user.swf]に来たリクエストをmod_rewriteで[/path/to/user.swf]に変換
- user.swfからloadVariable()でuser.phpを呼ぶ
- [/path/to/phpsessid/user.php]に来たリクエストをmod_rewriteで[/path/to/user.php?PHPSESSID=phpsessid]に変換
- user.phpでセッションデータを出力する
1. セッション開始・user.swfへのリンク生成[index.php]
セッションを開始するPHPファイルです。セッションに初期値をセットしておきます。(会員向けアプリケーションならここでログイン処理などを行います。)
あとuser.swfへのリンクを表示します。このリンクにはURLにセッションIDを含めるようにしておきます。
-
<?php
-
$_SESSION['count'] = 1;
-
-
?>
-
<a herf="<?php echo $url ?>">SWF</a>
2. user.swfを出力 [.htaccess]
1.のリンクをクリックすると[/path/to/phpsessid/user.swf]にリクエストが来ます。当然そのようなURLは無いのでmod_rewriteでURLを[/path/to/user.swf]に書き換えます。
-
RewriteEngine On
-
RewriteRule ^[0-9A-Za-z]+/user\.swf user.swf
3. user.swfからuser.phpを呼ぶ [user.swf]
user.swfからセッションのデータを取得するためにuser.phpにリクエストを投げます。ここでURLを相対パスで書くのがポイントです。
-
loadVariable('user.php');
4. user.phpを呼び出す [.htaccess]
3.から[/path/to/phpsessid/user.php]にリクエストが来ます。これをmod_rewriteでURLを[/path/to/user.php?PHPSESSID=phpsessid]に書き換えます。
これすればセッションIDがuser.phpに渡され、セッションを取得することができます。
-
RewriteEngine On
-
RewriteRule ^[0-9A-Za-z]+/user\.swf user.swf
-
# ↓を追加
-
RewriteRule ^([0-9A-Za-z]+)/user\.php user.php?PHPSESSID=$1
5. user.phpからセッションデータを出力 [user.php]
4.でセッションIDが渡されているので、あとは通常とおりセッション処理を記述すればokです。
-
<?php
-
$_SESSION['count']++;
-
} else {
-
}
-
?>
今回はPHPのセッションIDを使ったのですが、ようはユーザ(セッション)を識別できれば良いので一意なものであればトークンでも何でも良いです。
分かってしまえば簡単なのですが、思いつくまではかなり悩みました。。。
Lite 1.1上の開発は色々と大変なので誰かのお役に立てれば嬉しいです、はい。
■Related Posts





on 23 6月 2009 at 10:34 1.maxfactory | Flash lite(携帯Flash)、Flex、widgetなどの技術メモ » [flash lite]session管理 said …
[...] http://www.1×1.jp/blog/2006/12/flashlite11_php_session.html カテゴリー: 未分類 タグ: コメント (0) トラックバック (0) コメントをどうぞ トラックバックURL [...]
on 29 1月 2010 at 11:22 2.裏マニュアル 改 » Blog Archive » 技術関係のお役立ちサイト said …
[...] //–Flash Lite1.1とPHPセッションの連携 http://www.1×1.jp/blog/2006/12/flashlite11_php_session.html [...]