電子書籍の厳選無料作品が豊富!

codeigniterで、管理画面を作っていて、今認証画面に取り掛かってますが、sessionが引き継がれません。
※以下のコードは、session以外は省いてます。

controller側のtop.phpで、

class Top extends MY_Controller {

public function __construct()
{
parent::__construct();
$this->load->library('session');
}

public function index()
{

$superuser = array(
'superuser' => 'yes'
);

$this->session->set_userdata($superuser);
redirect('show');

}

$this->load->view('admin/top', $page);

}

とし、controller側のshow.phpで、

class Show extends MY_Controller {

public function __construct()
{
parent::__construct();
$this->load->library('session');
}

public function index()
{
var_dump($this->session->userdata('superuser'));

$this->load->view('admin/show');
}
}

としてますが、show.phpで、var_dumpがfalseを返してしまい、sessionが引き継がれません。

ご教授下さい。

A 回答 (1件)

CodeIgniterのバージョンはどれをご利用でしょうか?またsessionの保存はDBで行っていますでしょうか?



もし最新版の2.0.3をご利用の場合で、DBにsessionを保存している場合、
session保存用テーブルの構造を確認してください。

2.0.3からuser_agentカラムの文字数制限が50文字→120文字へ変更されており、ユーザーガイドのSQLが変更されています。
http://codeigniter.com/user_guide/libraries/sess … (Saving Session Data to a Databaseのところ)

この回答への補足

バージョンは、ci-ja-all-in-one-2.0.1-1です。

show create table で

CREATE TABLE `ci_sessions` (
`session_id` varchar(40) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`ip_address` varchar(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`user_agent` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`last_activity` int(10) unsigned NOT NULL DEFAULT '0',
`user_data` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

補足日時:2011/08/31 08:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!