我刚刚开始学习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
}
}
希望这个代码能帮助你!!!