Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database codeigniter中的动态全局_Database_Codeigniter_Dynamic_Global Variables - Fatal编程技术网

Database codeigniter中的动态全局

Database codeigniter中的动态全局,database,codeigniter,dynamic,global-variables,Database,Codeigniter,Dynamic,Global Variables,在codeigniter中使用动态全局变量的最佳实践是什么 我想根据从数据中加载的键加载一个带有常量的文件 我尝试了库,但它们是在模型初始化之前加载的 我希望它如何工作: 1) 用户登录 2) php检查该用户是普通用户(来自数据库)还是管理员 3) 如果是普通用户,我将相应地定义全局变量 否则我将使用不同的全局变量 当用户登录时,这种情况只应发生一次。我就是这样做的: 人员登录时,php检查(在同一控制器中)需要如何定义全局变量。它定义了它们,但一旦我从另一个控制器调用这些变量,它们就会被删除

在codeigniter中使用动态全局变量的最佳实践是什么

我想根据从数据中加载的键加载一个带有常量的文件 我尝试了库,但它们是在模型初始化之前加载的

我希望它如何工作:

1) 用户登录 2) php检查该用户是普通用户(来自数据库)还是管理员 3) 如果是普通用户,我将相应地定义全局变量 否则我将使用不同的全局变量

当用户登录时,这种情况只应发生一次。我就是这样做的:

人员登录时,php检查(在同一控制器中)需要如何定义全局变量。它定义了它们,但一旦我从另一个控制器调用这些变量,它们就会被删除。(我使用AJAX调用另一个控制器) 哦,我还应该说,当我们同时运行多个AJAX请求时,CI存在bug(如果同时使用AJAX,则无法使用CI会话)

所以问题是:如何防止它们被删除

首先感谢您-简单的部分: 使用AJAX的CodeIgniter数据库会话(最近)

第二,关于全球: 我给你的建议是首先扩展CodeIgniter的
CI_控制器
类,实现Phil Sturgeon题为的博客上概述的技术。完成后,让所有控制器从
MY\u控制器继承,而不是直接从
CI\u控制器继承

然后,您可以将
MY\u-In\u-Controller
MY\u-Out\u-Controller
MY\u-Admin\u-Controller
…等从
MY\u-Controller
扩展,但我离题了。重要的部分是检查新的基本控制器中的登录状态,并设置globals

class MY_Controller extends CI_Controller{
    function __construct(){
        parent::__construct();

        $l = $this->session->userdata("loggedin");
        if((!isset($l))||($l==FALSE)){
            /*user is logged out - set appropriate globals*/
        }
        else{
            /*user is logged in - fetch them from the database and set appropriate globals*/
        }
    }
}

现在,当您创建新控制器时,例如,
Blog
News
About
,您不必每次都设置全局变量,它们将可以在控制器、模型和视图中访问;所有这些都是因为父类会处理它。

你能详细说明一下你的过程吗?你的意思是常量都已经加载好了?也许你可以创建一个控制器,然后用常量加载你自己的文件?@Jurgo我就是这么做的,但是这些变量会被删除