php - 限制特定用户代理在表中创建 Codeigniter session

标签 php android mysql codeigniter

在发布问题之前我尝试了很多。我找不到解决我的问题的方法。请帮助任何人。 我正在使用 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/

相关文章:

PHP7 CLI 尝试加载 xdebug 两次 - "Cannot load Xdebug - it was already loaded"

php - 如何对插入和更新进行单个查询?

android - 如何在 android 中增加底部导航 View 高度及其图标和文本大小?

php - 在MySql数据库中按相等值统计记录数

mysql - 从 mysql 进行备份的最佳工具

php - 显示每个用户的三张图片

php - Doctrine 2 getResult() 需要很多时间

android - 使用 .NET 读取 Android 应用程序 (apk) 的 ApplicationManifest

java - 如何从具有嵌套子项的 firebase 检索 json?

mysql 排名变量