您好我是codeigniter框架的初学者,我遇到了一些问题。
在我的索引页面上,我有登录表单,当用户插入用户名和密码并单击提交按钮时,他调用控制器的方法登录,其任务是从表单收集用户名和密码,并将数据传递给模型方法“login($ username,$ password)“然后models方法返回true或false,具体取决于我们是否在数据库中有有效用户,然后控制器的方法要么进一步传递用户,要么在开始时返回给他。 我的问题是我想知道用户的访问级别,我在模型中创建了这个方法
public function users_level($username){
$query = $this->db->get_where('users',array('username' => $username) );
$users_level = $query->result(); // I tried with these too $users_level[] = $query->result();
return $users_level;
}
我希望返回用户的访问级别,并使用该信息来确定为该特定用户显示的视图。
这是来自控制器的登录方法:
public function login(){
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->load->model('model_user');
$result = $this->model_user->login($username,$password);
if ($result == true){
$result['level'] = $this->model_user->users_level($username); //i believe that mistake is maybe in this line
$this->welcome(); //I'm going to send information to welcome method about users level of access
}else if ($result == false){
$this->index();
}
}
这是一个错误发生
Severity: Warning
Message: Cannot use a scalar value as an array
Filename: controllers/controler_user.php
Line Number: 33
Backtrace:
File: C:\wamp\www\ci_project_2015\application\controllers\controler_user.php
Line: 33
Function: _error_handler
File: C:\wamp\www\ci_project_2015\index.php
Line: 292
Function: require_once
答案 0 :(得分:1)
当您已将$result
初始化为布尔值时,尝试将其用作数组。您可以使用以下命令将其重新初始化为数组:
$result = array('level' => $this->model_user->users_level($username));
或
$result = array();
$result['level'] = $this->model_user->users_level($username);
然而,这是一个坏主意,因为您对不同的事物使用相同的变量。更好的解决方案是重命名其中一个变量,例如
$logged_in = $this->model_user->login($username,$password);
if ($logged_in == true){
或者更好的是,由于布尔值仅被使用一次,因此您可以跳过$logged_in
的初始化并直接在条件中使用$this->model_user->login($username,$password)
的结果
if ($this->model_user->login($username,$password)) {
您可以省略== true
,因为它返回一个布尔值。