4

I am trying to pass an array through a function in a controller class and retrieve it from another function in a class inside model, but the values cannot be retrieved. please advise.

The code is as follows.

Controller class code

 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";
    }


}

}

Model class code

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;

}

}

The variables $uname and $pass are the two values that need to get to query the database. please help

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 に答える