【问题标题】:How to use global variable in PHP Codeigniter如何在 PHP Codeigniter 中使用全局变量
【发布时间】:2013-10-08 00:54:19
【问题描述】:

我已经在一个 MVC 应用程序中实现了登录逻辑;我想查看用户是否错误地填写了用户名和密码,如果是,我想在视图中显示通知;所以我通过 $data['er'];但由于某种原因,它没有捕捉到这些数据:

请让我知道我的问题是否清楚;如果需要任何澄清,请让我知道哪个部分不明确

我的代码:

class Login extends CI_Controller {

    public function __construct() {
        parent::__construct();
         $GLOBALS['er'] = False;
    }



    public function index() {

        $data['er']=$GLOBALS['er'];
        $data['main_content'] = 'login_form';
        $this->load->view('includes/template', $data);
    }

    public function validate_credentials() {

        $this->load->model('user_model');
        $query = $this->user_model->validate();
        if ($query) {
            $data = array(
                'username' => $this->input->post('username'),
            );
            $this->session->set_userdata($data);
            redirect('project/members_area');
        } else {
            $GLOBALS['er'] = TRUE;
            $this->index();

        }
    }

} 

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    不要使用GLOBALS,你可以在你的类中使用私有变量。

    • __construct 函数上方创建变量,例如private $er
    • 在您的__contruct 函数中设置默认值
    • 使用$this->er 设置并进入您的公共函数

    在您的代码中实现:

    class Login extends CI_Controller {
    
        private $er;
    
        public function __construct() {
            parent::__construct();
            $this->er = FALSE;
        }
    
        public function index() {
            $data['er']= $this->er;
            $data['main_content'] = 'login_form';
            $this->load->view('includes/template', $data);
        }
    
        public function validate_credentials() {
            $this->load->model('user_model');
            $query = $this->user_model->validate();
            if ($query) {
                $data = array(
                    'username' => $this->input->post('username'),
                );
                $this->session->set_userdata($data);
                redirect('pmpBulletin/members_area');
                //die(here);
            } else {
                $this->er = TRUE;
                $this->index();
            }
        }
    } 
    

    【讨论】:

    • OP 要求使用全局变量,而不是局部类变量。考虑到可以在应用程序周围的任何其他地方请求 var。似乎已经打开了一个关于此stackoverflow.com/questions/17013397/… 的线程
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2015-11-03
    相关资源
    最近更新 更多