当前位置: 首页 > 知识库问答 >
问题:

Codeigniter会话问题

周阳波
2023-03-14

我正在使用codeigniter。我有个奇怪的问题。我在用户登录时设置会话,并将其重定向到新页面。我观察到,会话有时设置,有时不设置。我尝试过使用codeigniter会话

以下是配置文件的外观:

$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 7200;

共有3个答案

雍兴修
2023-03-14

有同样的问题和我发现的问题

    $config['sess_encrypt_cookie']  = TRUE;
    $config['sess_use_database']    = TRUE;

将在会话表中插入2条记录,第一条记录包含数据,第二条记录不包含任何内容,因此无法访问会话数据。当你改变

    $config['sess_encrypt_cookie']  = FALSE;

如果为false,它将只插入一条记录到会话表中,其中包含所有的数据,并且所有的数据都正确:)

卢出野
2023-03-14

您的sess_cookie设置在哪里?我在那儿没看见?

$config['sess_cookie_name']     = 'cookiename';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 7200;

确保您选择的任何cookie名称都没有下划线。即:

$config['sess_cookie_name'] = 'mycookie';   // good
$config['sess_cookie_name'] = 'my_cookie';   // bad
贡斌
2023-03-14

当会话数据在数据库中可用时,每次在用户的cookie中找到有效会话时,都会执行数据库查询以匹配该会话。如果会话ID不匹配,则会话将被销毁。会话ID永远不能更新,只能在创建新会话时生成。

为了存储会话,必须首先为此创建一个数据库表。

在数据库中创建它:

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) 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`)
);

何时,转到配置并更改:

$config['sess_use_database']    = TRUE;

我更喜欢将会话保存在数据库中,因为它更安全,工作没有问题。

 类似资料:
  • 我在Chrome上使用数据库的codeigniter会话有一个严重的问题:当我使用Chrome开发者工具刷新页面时,会话被破坏。 这是我的会话配置: 你知道吗?

  • 我正在使用CodeIgniter和RestServer实现构建一个APIhttps://github.com/chriskacerguis/codeigniter-restserver 我想使用会话身份验证模式,所以我在配置/rest.php中设置了这个: 在config/config中。php: 我有一个控制器身份验证,其代码如下: 会话存储在数据库中,并包含来自$user的数据。pr回显数据(

  • 我正在Codeigniter中创建API。在这个API中,我为用户提供了一个登录函数。如果登录成功,我将在CI会话中设置用户数据,并将会话返回给用户。 现在,用户可以使用该会话ID来验证他自己的所有其他请求,如添加/更新/删除。基本上,我希望当用户发送下一个请求时,我可以根据他的会话ID验证他的凭据。 客户请求代码: 上面是一个从客户端到服务器的登录请求示例。在服务器端,服务器验证客户端提供的凭据

  • 我正在将我的CodeIgniter 3应用程序迁移到Docker,我遇到了会话问题。由于CI会话,我无法登录应用程序。 似乎CodeIgniter会在服务器的每个请求中重新创建新会话。当我检查包含的内容时,我可以看到两个字段: 新会话的文件由用户创建,并具有正确的权限。 会话配置: Docker图像:,, 我不知道发生了什么。有人能帮帮我吗?

  • 我在Codeigniter框架中面临一个新问题。她是我最讨厌的人 这是控制器 模型是

  • 我已经在Codeigniter上编写了一个简单的身份验证过程,但存在一个问题。 由于某些原因,当用户浏览站点时,会话会被混淆,并模拟另一个随机用户。 我只是做: 我通过