宮澤 好幸
miyaz****@syste*****
2009年 7月 29日 (水) 15:02:18 JST
kunitsujiさん
宮澤です。
情報不足で申し訳ございません。
> リダイレクトは、redirect()関数を使って行っていますか?
上記を使用しております。
> CIのバージョンはどのバージョンを使われていますか?
// CI Version
define('CI_VERSION', '1.7.0');
上記の表記がしてありました。
> の部分ですが、$rowは配列で?
> また、この段階ではセッション情報が格納されているということですが、
> echo $this->CI->session->userdata('管理者ID');と、
> set_userdata()
> の後で確認されたのでしょうか?
$rowは配列になっておりまして、ログイン認証⇒DBから対象となる1レコード
をセッションに格納
⇒格納後var_dump($this->CI->session->userdata);にて確認
このdump時は情報が入っています。
そこから
redirect()
⇒違うコントローラーに遷移
⇒var_dump($this->CI->session->userdata);にて確認
この状況ではデータ格納がされていませんでした。
ここよりログインデータの取得ファイル-----------------------------------
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Admin_auth {
var $CI;
var $admin_table = 'op_admin';
var $admin_log_table = 'op_admin_log';
function Admin_auth()
{
}
function login($loginname = '', $password = '')
{
//Put here for PHP 4 users
$this->CI =& get_instance();
//Make sure login info was sent
if ($loginname == '' OR $password == '')
{
return false;
}
//Check against user table
$this->CI->db->where('loginname', $loginname);
$this->CI->db->where('password', $password);
$this->CI->db->where('disabled', 0);
$query = $this->CI->db->get($this->admin_table);
if($query->num_rows > 0)
{
$row = $query->row_array();
//Destroy old sessions
$this->CI->session->sess_destroy();
//Create a fresh, brand new session
$this->CI->session->sess_create();
//Remove the password field
unset($row['password']);
//Set session data
$this->CI->session->set_userdata($row);
//login log
$data = array(
'loginname' => $loginname,
'password' => $password,
);
$this->CI->db->insert($this->admin_log_table, $data);
//Login was successful
return true;
}
else
{
//No database result found
return false;
}
}
function logout()
{
//Put here for PHP 4 users
$this->CI =& get_instance();
//Destroy session
$this->CI->session->sess_destroy();
redirect('login');
}
}
?>
-----------------------------------------------------------------------
上記認証にてtrueを返すと違うコントローラーに遷移する仕様になっております。
ちなみにとその違うコントローラーでは下記のような処理を行っております。
-----------------------------------------------------------------------
class Top extends Controller {
function Top()
{
parent::Controller();
$this->load->library('admin_auth');
if(!$this->session->userdata('id')){
redirect('login');
}
}
-----------------------------------------------------------------------
以上が現状です。
よろしくお願いいたします。
On Wed, 29 Jul 2009 14:47:22 +0900
kunitsuji <tsuji****@m-s*****> wrote:
> kunitsujiです。
>
> 宮澤さん、どうも。
>
> リダイレクトは、redirect()関数を使って行っていますか?
> CIのバージョンはどのバージョンを使われていますか?
> あと、
> >ちなみにリダイレクトする前の段階ではここの管理者ID、
> >ログインネーム、etcが入っているのですが。
> の部分ですが、$rowは配列で?
> また、この段階ではセッション情報が格納されているということですが、
> echo $this->CI->session->userdata('管理者ID');と、
> set_userdata()
> の後で確認されたのでしょうか?
>
> ちょっと具体的に見えないのでわかりません。
>
>
> >はじめまして宮澤と申します。
> >
> >いろいろとCIで管理画面やら、フロント側の作成を
> >しておりますが、ログイン情報のコントローラーにて
> >
> >DBからのデータをセッションに格納しております。
> >$this->CI->session->set_userdata($row);
> >
> >ちなみにリダイレクトする前の段階ではここの管理者ID、
> >ログインネーム、etcが入っているのですが。
> >
> >違うコントローラにリダイレクトをかけるとセッション情報
> >が無くなっています。
> >
> >dumpして調べてみたのですが、サーバーのphp.iniの設定なのか
> >検証してみたのですが、どうやら違うみたいです。
> >
> >テストサーバー さくらインターネット専用サーバー
> >本番サーバー マイティサーバー専用
> >
> >文言だけではわかりにくいかと思いますがよろしくお願いいたします。
> >
> >宮澤
> >
> >_______________________________________________
> >Codeigniter-users mailing list
> >Codei****@lists*****
> >http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
システムディーツー
宮澤 好幸(ミヤザワ ヨシユキ)
〒205-0011
東京都羽村市五ノ神3-3-6
ハイブリッジ羽村101号室
TEL:080-5482-8671
MAIL:miyaz****@syste*****
HP :http://www.system-d2.com/
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz