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

Codeigniter正在干扰会话

邵鸿福
2023-03-14

我已经在Codeigniter上编写了一个简单的身份验证过程,但存在一个问题。

由于某些原因,当用户浏览站点时,会话会被混淆,并模拟另一个随机用户。

我只是做:

$this->session->set_userdata('logged_in', TRUE);  
$this->session->set_userdata('id', $account->id);

我通过$logged\u id=$this获取登录用户的id-

我将会话存储在DBci_sessions表
上,配置文件包含默认值:

$config['sess_cookie_name']     = 'ci_session';  
$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']  = 300;

什么会扰乱会话并从中获得不同的ID?


共有2个答案

贺景铄
2023-03-14

听起来真奇怪。您的代码和配置似乎正常。请检查用户登录时是否正确销毁/init会话:

$this->CI->session->sess_destroy();
$this->CI->session->sess_create();

然后查看MySQL ci_sessions表,并尝试调试显示当前用户“session_id”的问题。。对吗?如果您没有解析,请发布更多您正在使用的代码。

高明辉
2023-03-14

晚回答,但可能对某人有用。我曾经遇到过这个问题,这是因为用户代理的列太小(然后,字符串被截断,CodeIgniter正在重新创建会话id,认为客户端不同)。确保使用CI上提到的架构表。

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`)
);
 类似资料:
  • 我已经编写了一个服务器-客户端(两个程序)结构,它工作正常。。。仅当使用TCP时。我的想法是使用TCP进行文本聊天传输(udp不可靠),但使用udp进行游戏数据包传输(是的,这是一种每秒30帧的动作游戏,所以我需要udp)。 但是,当我在客户端进程中与TCP建立连接时,我开始向服务器程序发送UDP数据包,并从服务器程序接收UDP数据包。客户端在单个线程中使用非阻塞套接字、UDP和TCP。这里没有多

  • 如何监控LMAX Disruptor?假设我有3个环缓冲区,并希望提供一个用户界面来提供环缓冲区的信息。

  • 我试图做的是防止用户在我的输入中输入空字符串。现在,用户只能输入数字。然而,没有什么能阻止他们将文本字段留空。我想限制他们在程序空白时按我的按钮启动程序。 现在,我的文本字段最初是空白的,按钮最初是灰色的。但当我输入一些东西时,按钮保持灰色。请记住,所有这些代码都在构造函数中。

  • 我想在JavaFX中使用拖放,并有一个功能,您可以直观地看到正在拖动的项目。我已经实现了我认为可行的解决方案,但API似乎存在问题。 根据API start DragAndDrop(TransferMode...)必须在setOnDragDetted中初始化。这是我使用Dragboard存储我想传输到另一个节点的内容的地方。 编辑:这似乎与TrasferMode有关。如果我使用TransferMo

  • 概述 无干扰模式将只在显示器中以全屏模式显示你的文件,可以在菜单栏中的View - 切换无干扰模式进入无干扰模式,快捷键也可以。 定制化 无干扰模式将使某些设置生效,默认设置(位于Packages/Default/Distraction Free.sublime-settings)是: { "line_numbers": false, "gutter": false, "draw_ce

  • 我需要从同一个套接字或者从$*IN中读取多个线程;然而,似乎有错误,因为每个都试图从相同的来源读取(我认为)。解决这个问题的最好方法是什么?谢谢!! 以下是错误: 谢谢!!