0

次のコードがあります。

$session_data = array(
     'user_id' => $user_id,
     'username' => $username,
     'group_id' => $group_id,
     'logged_in' => TRUE
);
$this->session->set_userdata($session_data);

user_id と logged_in は完全に db に保存されますが、username と group_id は "N" で保存されます。システムの構造は「モジュラー」です。私の古いアプリケーションでは、MVC に従うだけで問題なく動作します。

誰かが以前にこの問題を抱えていましたか?

編集:すべての N 値が問題であり、代わりに各データの実際の値にする必要があります

以下は、データベースの user_data フィールドです

a:5:{s:9:"user_data";

s:0:"";s:7:"user_id";N;

s:8:"username";N;

s:5:"group";N;

s:9:"logged_in";b:1;}
4

2 に答える 2

0

それを私が直した。これは CI セッション ライブラリとは関係ありません。データベース クエリでエラーが発生しました :(

ご迷惑をおかけして申し訳ありません

于 2013-01-24T14:15:13.813 に答える
0

セッションでのデータの保存を有効にする必要があります。

  1. アプリケーションがセッションの保存にデータベースを使用するように application/config/config.php に設定します。

$config['sess_use_database'] = TRUE;

  1. データベースにテーブルを作成し、config.php で設定されているのと同じ名前をテーブルに付けます。

    CREATE TABLE IF NOT EXISTS ci_sessions( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(45) DEFAULT '0' NOT NULL, user_agent varchar(120) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id), KEY last_activity_idx( last_activity) );

次に、セッションを使用するたびに、codeigniter がデータベースをリレーし、そこで「user_data」フィールドに必要なものを設定できます。おそらく、そのデータをシリアル化して「user_data」フィールドに保存するとよいでしょう。

PHP セッションまたは Cookie へのデータの保存には、一定の制限があります。

于 2013-01-24T13:48:59.047 に答える