在发布问题之前我尝试了很多。我找不到解决我的问题的方法。请帮助任何人。 我正在使用 codeigniter 开发的应用程序。该应用程序具有用户登录页面,当用户使用用户详细信息登录时,将创建 session 并将其存储到 session 表中。
$data = array(
'username' => $this->input->post('user_name'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
当我使用上面的代码时,codeigniter会自动插入到我的 session 表(dt_usersession)中。
如果有人尝试使用相同的用户名和密码登录,我可以像其他已经使用相同详细信息登录的人一样通知他们。如果他/她想登录,我会要求他们输入安全 key 以关闭表中的上一个 session ,并且我将允许登录当前用户。 我将每隔 2 分钟从 ajax 检查当前 session 是否处于 Activity 状态,如果不是,页面将终止并重定向到登录页面。这将非常适合我的网络应用程序。
当我从 android 新 session 频繁创建调用我的 codeigniter Controller 时,我也有 android 应用程序(对于每个调用新 session 在表中创建)。 因此,当我每分钟检查是否有其他人使用相同的用户名和密码登录时,我的 session 表不断创建新行。所以我的服务器负载不断增加。由于使用我的应用程序的用户数量较多,因此为每个用户请求多次创建新记录。如何解决这个问题,请大家帮忙
最佳答案
您可以在/application/libraries文件夹中创建一个MY_Session类,并根据条件覆盖默认配置文件,如下所示:
class MY_Session extends CI_Session {
public function __construct() {
if(User::isLoggedIn())
{
$params = array(
"sess_use_database" => true,
"sess_table_name" => "CI_Session" // ... all other settings you may need
);
}
else
{
$params = array();
}
// initialize parent session with correct params
parent::__construct($params);
}
}
或者,您可能希望为 session (CI 范围之外)创建自己的表,并仅存储登录用户的 ID、 session ID ( session_id()
see manual ) 和时间戳并继续检查该表,同时保留 CI session 。
关于php - 限制特定用户代理在表中创建 Codeigniter session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24954975/