4

我试图通过控制器类中的函数传递数组并从模型内部类中的另一个函数中检索它,但无法检索到值。请指教。

代码如下。

控制器类代码

 class home extends CI_Controller {

function __construct() {
    parent::__construct();
    $this->load->helper('url');
}

function index() {
    $this->load->view('loginview');
}

function login() {
    $parameters = array(
        '$uname' => $this->input->post('uname'),
        '$passwords' => $this->input->post('password')
    );

    $this->load->model('loginModel');
    $validate = $this->loginModel->validateuser($parameters);

    if(count($validate)== 1){
        echo "Logged in";
    }
    else
    {
        //redirect('home/index');
        echo "dasad";
    }


}

}

型号类代码

class loginModel extends CI_Model {

function __construct() {
    parent::__construct();
}

public function validateuser($parameters) {

        $uname = $parameters['uname'];
        $pass = sha1($mem['pass']);



    $query = $this->db->query("select * from user where username = '$uname' and password = '$pass'");
    $result = $query->result_array();
    return $result;

}

}

变量 $uname 和 $pass 是查询数据库所需的两个值。请帮忙

4

4 回答 4

1

您的代码中有错误。正确的控制器 login() 方法:

function login() {

    // you don't need '$' sign
    $parameters = array(
        'name' => $this->input->post('uname'),
        'pass' => $this->input->post('password')
    );

    $this->load->model('loginModel');
    $validate = $this->loginModel->validateuser($parameters);

    // stuff..

}

和模型 loginModel() 方法:

public function validateuser($parameters) {

    $uname = $parameters['name'];
    $pass = sha1($parameters['pass']); // and second error was here

    // stuff..

}
于 2012-11-15T12:19:01.177 回答
1

您的数组键字符串在模型和控制器类中是不同的。以下是可能的修复。

在控制器中使用这个:

$parameters = array(
        'uname' => $this->input->post('uname'),
        'passwords' => $this->input->post('password')
    );

其次在您的模型中。使用它来获取参数。

  $uname = $parameters['uname'];
  $pass = sha1($parameters['passwords']);

希望能帮助到你。

于 2012-11-15T12:21:19.230 回答
0

我看到您的答案已经确定,但我只想给您一个替代方案。它更安全、更短:

控制器:

function login() {

    $this->load->model('loginModel');
    $validate = $this->loginModel->validateuser();

    if($validate ){
        echo "Valid User";
    } else{
        echo "Invalid User";
    }
}

模型:

public function validateuser() {

 $query = $this->db->query("select * from user where username = ? and password = ?",array($this->input->post('uname'),sha1($this->input->post('password'))));
   if($query->num_rows() == 1){
      return true;
   }else{
     return false;
  }

} 
于 2012-11-16T08:45:49.807 回答
0

我有同样的问题,我发现这样做的唯一方法显然是 json_encode() 控制器中的数组和模型中的 json_decode 它们。它就像我的魅力一样工作。祝你好运!

于 2020-04-05T19:46:28.210 回答