別の方がバニラPHPで作った管理画面があり、
ここに私が追加機能を実装することになりました。
なかなか複雑な機能実装のため、CodeIgniter3を使用することにしました。
今回お聞きしたいのは、管理画面のログイン状態を引き継ぐ方法についてです。
ディレクトリ構成は次のようになっています。
/html /index.html <- ユーザ向け画面 /admin <- 管理画面 /index.php /login.php /logout.php /ci_program <- CIのプロジェクトディレクトリ /application /public /index.php /vendor /codeigniter /framework /application /system
バニラPHP側は、ログイン機能を次のようなコードで実装しています。
function login($user, $password) { if (($user == LOGIN_USER) && ($password == LOGIN_PASSWORD)) { if (isset($_SESSION)) { session_regenerate_id(true); } else { start_session(); } $_SESSION[LOGIN_SESSIONKEY] = true; return true; } return false; } function is_login() { start_session(); if (isset($_SESSION[LOGIN_SESSIONKEY])) { return true; } return false; } function logout() { start_session(); unset($_SESSION[LOGIN_SESSIONKEY]); if (isset($_COOKIE[LOGIN_SESSIONKEY])) { setcookie(LOGIN_SESSIONKEY, ''); } }
ログインしていればtrueを、そうでなければfalseを返す感じです。
このバニラPHPのログイン状態をCodeIgniter側で取得する良い方法が知りたいです。
全然良いアイデアが思いつかなかったので、
今はCodeIgniterで一番最初に読み込まれる public/index.php
の最初に直接、
次のような記述をしています。
<?php define(LOGIN_SESSIONKEY, "secret"); $isLogin = FALSE; if(!isset($_SESSION)){ session_set_cookie_params(0, '/', '', true, true); session_name('secret'); session_start(); $isLogin = (isset($_SESSION[LOGIN_SESSIONKEY])); // bool session_write_close(); } define('ADMIN_LOGIN', $isLogin); // bool
もっと良い方法があれば教えてください。
サーバ環境は、 CentOS 6 PHP 5.3.28 CodeIgniter 3.1.10 です。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー