登录时运行查询验证过程


run a query while login validation process

我刚刚开始学习codigniter,现在遇到了一些问题,我正试图将我的核心php转换为codigniter mvc,所以问题是,在普通php中,我使用了以下带有以下featus的脚本。

function verify($connect) {
    $username  = $_POST["username"];
    $password = mysqli_real_escape_string($connect, $_POST["password"]);
    $get_query = mysqli_query($connect, "SELECT * FROM users");
    while($record = mysqli_fetch_assoc($get_query)) {
        $uname = $record{"username"};
        $pass  = $record["password"];
        if($username == $uname && $password == $pass) {
            if($record["utype"] == "admin") {
                $_SESSION["uname"] = $username;
                $_SESSION["uid"]   = $record["uid"];
                header("Location: control.php?uid=".$_SESSION["uid"]);
            } else {
                $_SESSION["uname"] = $username;
                $_SESSION["uid"]   = $record["uid"];
                $query = mysqli_query($connect, "INSERT INTO online (uid, status, uname) VALUES ('{$record["uid"]}', 'online', '$username')");
                header("Location: index.php?uid=".$_SESSION["uid"]);
            }
        } else {
            $_SESSION["message"] = "Invalid Username/Password provided";
            header("Location: login.php");
        }
    }
}

好的,现在在mvc中,我使用以下内容,但我如何完成与上面相同的功能

public function login_validation() {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('username', 'Username', 'required|trim');
        $this->form_validation->set_rules('password', 'Password', 'required|trim');
        if($this->form_validation->run()) {     
            $data = array(
                'username' => $this->input->post('username'), 
                'is_logged_in' => 1
            );
            $this->session->set_userdata($data);
            redirect('main/index');
        } else {
            $this->load->view('login');
        }
    }

您必须在代码中进行以下更改

请查看此代码,并尝试通过阅读注释来实现。

public function verify(){
$this->load->library('session'); # load codeigniter session library
# $this->input->post() is used for set post data
$username  = $this->input->post("username");
$password  = $this->input->post("password");
$q=$this->db->get_where('users',array('username'=>$username,'password'=>$password));
if($q->num_rows() > 0){ # num_rows() gets total numbers of record in table
    $result = $q->row(); # Returns single records
    if($result->utype == "admin") {
        # $this->session->set_userdata() is used for set session in codeigniter
        $this->session->set_userdata("uname",$username); 
        $this->session->set_userdata("uid",$result->uid);
        redirect(base_url().'index.php/yourController/method'); # change your controller name & method name
    }else{
        $this->session->set_userdata("uname",$username); 
        $this->session->set_userdata("uid",$result->uid);
        $data=array('uid'=>$result->uid,'status'=>'online','uname'=>$username);
        $this->db->insert('online',$data);
        # $this->session->userdata() is used for retrive session data in codeigniter
        redirect(base_url().'index.php/yourController/method?uid='.$this->session->userdata("uid"));    # change your controller name & method name
    }   
}else{
    # $this->session->set_flashdata() is used for set set message and retrive this flashdata by $this->session->flashdata('message') on your view page
    $this->session->set_flashdata('message',"Invalid Username/Password provided");
    redirect(base_url().'index.php/yourController/method'); # change your controller name & method name
}
 }

希望这个代码能帮助你!!!