web-dev-qa-db-ja.com

codeigniter 3データベースでセッションを設定するにはどうすればよいですか?

新しいバージョン(3.0.0)を使用しています。 CodeIgniterと私は新しい問題があり、私のセッションは機能しません。エラーがないため、コントローラーのコードは正しいですが、ビューでPHP変数を印刷しようとすると何もありません。

MySQL Serverでテーブルをチェックしましたが、何も問題はありません。 config.phpのコードを配置します。 (この新しいバージョンでは多くのことを理解していません)

$config['sess_table_name']              = 'ci_sessions';
$config['sess_driver']              = 'database';
$config['sess_cookie_name']             = 'ci_session';
$config['sess_expiration']          = 7200;
$config['sess_save_path']               = NULL;
$config['sess_match_ip']                = FALSE;
$config['sess_time_to_update']      = 300;
$config['sess_regenerate_destroy']  = FALSE;

「make」セッションの動作に最初の行を追加する必要がありますが、データベースでセッションを作成するためにその構成が正しいかどうかはわかりません。

誰かが同じ問題を抱えているなら、私を助けてください:(。私のセッションクラスは編集されていません。

まず最初に CI3セッションテーブル とCI2セッションテーブル( データベースへのセッションデータの保存 )構造が異なります

新しいセッションテーブル 構造

_ CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    PRIMARY KEY (id),
    KEY `ci_sessions_timestamp` (`timestamp`)
);
_

第二に、 古い構成変数新しい構成 をサポートしますが、新しい構成を使用することをお勧めします

_$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';//its your table name name
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
_

詳細は docs をご覧ください

セッションライブラリで使用できる新しい機能はほとんどありません。

Remember使用する前にautoload.phpまたは$this->load->library('session');をロードすることを忘れないでください。

36
Shaiful Islam

「最初の行」を追加した場合(つまり、sess_table_name)それを機能させるために、それはあなたのsess_driver値はdatabaseに設定されます。 サポートされているドライバーのリスト を見てください。ファイルベースのセッションの場合は、デフォルトで設定されていることがわかります。言い換えれば、これらの行を削除すると、動作するはずです。

$config['sess_table_name']          = 'ci_sessions';
$config['sess_driver']              = 'database';
0
Jeremy Harris

追加した行を削除して設定します。

$config['sess_save_path'] = 'ci_sessions';

残りのコードは問題ないはずです。 ドキュメントへのリンク

0
Tpojka