[Codeigniter-users] リダイレクト時のセッション情報について

Back to archive index

Kenji Suzuki kenji****@gmail*****
2009年 7月 29日 (水) 16:04:35 JST


Kenji です。


On Wed, 29 Jul 2009 15:46:07 +0900
宮澤 好幸 <miyaz****@syste*****> wrote:

> kunitsujiさん
> 
> 宮澤です。
> 
> セッションデータは現在DBにはいれていません。
> ci_sessionテーブルに入れた方がよろしいのでしょうか。

DB にセッションデータを入れて、セッションID を検証した方が
セキュアでしょうが、今回の不具合には影響しません。

HTTP セッションを覗いて Cookie がどうなっているか、
確認してみてください。


// Kenji

 
> On Wed, 29 Jul 2009 15:37:40 +0900
> kunitsuji <tsuji****@m-s*****> wrote:
> 
> >  kunitsujiです。
> > 
> > 宮澤さん
> > ちょっとみてみましたが、特におかしいところはなさそうです。。
> > たとえば、セッションデータはDBに入れているかと思いますが、
> > DBの中に格納されたデータを見ることはできますか?
> > admin_authでセッションに格納した時、
> > 次に
> > リダイレクトしてTOPコントローラを開いた時。
> > 
> > その時に、DBのデータが削除されるということは考えにくいので、
> > クッキーが取得できず、別のセッションと判定されていないでしょうか?
> > 
> > ※仮にログインコントローラでセッションを破棄している場合は当然データは削
> > 除されますが。。
> > 
> > あときになったのですが、admin_authをtopコントローラでロードしているよう
> > ですが、
> > これは必要ないですよね?
> > 
> > > kunitsujiです。
> > >
> > >宮澤さん
> > >下記確認してみますね。
> > >
> > >
> > >>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
> > >>
> > >>_______________________________________________
> > >>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
> > 
> > _______________________________________________
> > 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
> 
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users




Codeigniter-users メーリングリストの案内
Back to archive index