既に作ったシステムを他社が管理することになった時、Ethnaの既存のプロジェクトで開発を進めてくれたら良いんだけど、そんなこともそうそう無いだろうと思って、一番ネックになりそうなセッション周りを調べてみた。
要は、Ethnaで発行したセッション値をプロジェクト外から参照出来れば、ログインシステムは既存のシステムでいけるでしょと。
これでOKだと思うけど、もしEthnaでまた別のプロジェクトを生成し、プロジェクト間を横断となると、セッション名とか保存ディレクトリの場所を一つに統一した方が良いと思うな。
この場合は、Ethna_Sessionクラスをオーバーライドしないと駄目だな。
要は、Ethnaで発行したセッション値をプロジェクト外から参照出来れば、ログインシステムは既存のシステムでいけるでしょと。
// EthnaのHogeプロジェクトで発行したhogeという値を表示する
// プロジェクトごとにセッションIDが振られる
$session_name = "HogeSESSID";
session_name($session_name);
// Ethnaのプロジェクトの中の/tmpディレクトリを参照
session_save_path("/var/www/html/ethna/hoge/tmp");
session_cache_limiter('private, must-revalidate');
if (!empty($_COOKIE[$session_name]) ||
(ini_get("session.use_trans_sid") == 1 && !empty($_REQUEST[$session_name]))
) {
session_start();
echo($_SESSION['hoge']);
}一応、Ethna_Sessionクラスのコンストラクタとrestore関数を参考に書いたら出来た。これでOKだと思うけど、もしEthnaでまた別のプロジェクトを生成し、プロジェクト間を横断となると、セッション名とか保存ディレクトリの場所を一つに統一した方が良いと思うな。
この場合は、Ethna_Sessionクラスをオーバーライドしないと駄目だな。
コメント