您好我是CodeIgniter的新手,目前正在開發一個基本上是admin/user系統的項目。CodeIgniter用戶/管理員登錄
目前我已經能夠創建登錄表單,並且可以在檢查用戶存在後成功獲取用戶登錄。
我只是想指出正確的方向,我可以如何去這個能夠登錄一個普通用戶到成員頁面,並且管理員用戶到管理頁面。
這就是我目前所擁有的功能,它使用bootstrap作爲前端框架完全運行。但允許我的成員表中的任何用戶登錄。
查看:
<?php $attributes = array("class" => "form-horizontal", "id" => "loginform", "name" => "loginform");
echo form_open("login/loginchk", $attributes);?>
<h2>Please Login</h2>
<hr>
<fieldset>
<!--<legend>Login</legend>-->
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_username" class="control-label">Username</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_username" name="txt_username" placeholder="Username" type="text" value="<?php echo set_value('txt_username'); ?>" />
<span class="text-danger"><?php echo form_error('txt_username'); ?></span>
</div>
</div>
</div>
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_password" class="control-label">Password</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_password" name="txt_password" placeholder="Password" type="password" value="<?php echo set_value('txt_password'); ?>" />
<span class="text-danger"><?php echo form_error('txt_password'); ?></span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-lg-12 col-sm-12 text-center">
<input id="btn_login" name="btn_login" type="submit" class="btn btn-default" value="Login" />
<input id="btn_cancel" name="btn_cancel" type="reset" class="btn btn-default" value="Cancel" />
</div>
這裏是我的登錄控制器(login.php中):
public function loginchk()
{
//get the posted values
$username = $this->input->post("txt_username");
$password = $this->input->post("txt_password");
//set validations
$this->form_validation->set_rules("txt_username", "Username", "trim|required");
$this->form_validation->set_rules("txt_password", "Password", "trim|required");
if ($this->form_validation->run() == FALSE)
{
$data["title"] ="SmartAgent";
//validation fails
$this->load->view("site_header");
$this->load->view("content_home", $data);
$this->load->view("site_footer");
}
else
{
//validation succeeds
if ($this->input->post('btn_login') == "Login")
{
//check if username and password is correct
$usr_result = $this->login_model->get_user($username, $password);
if ($usr_result > 0) //active user record is present
{
//set the session variables
$sessiondata = array(
'username' => $username,
'loginuser' => TRUE
);
$this->session->set_userdata($sessiondata);
redirect("site/members");
}
else
{
$this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Invalid username and password!</div>');
redirect('site/home');
}
}
else
{
redirect('site/home');
}
}
這裏是一個引導到會員頁面(site.php)控制器內的代碼:
public function members(){
$data["title"] ="Admin Panel";
$this->load->model("notifications");
if ($this->session->userdata('loginuser')){
$this->load->view("site_header");
$this->load->view("site_nav");
$this->load->view('members', $data);
$this->load->view("site_footer");
} else {
redirect('site/restricted');
}
}
終於在這裏是我的模型(login_model.php):
function get_user($usr, $pwd)
{
$this->db->where('username', $usr);
$this->db->where('password', md5($pwd));
$query = $this->db->get('members');
//echo $query;
return $query->num_rows();
}
}
爲了澄清我有兩個控制器,我的主控制器默認是site.php和登錄控制器login.php。總之,我的目標是能夠將admin用戶重定向到members.php,並且能夠將普通用戶重定向到agent.php(尚未創建)。
P.S我在PhpMyAdmin中的表中已經有一個名爲「admin」的列,我只是使用「是」或「否」來確定它們是否是。
[Ion Auth是一個用於您的CodeIgniter的優秀認證庫](http://benedmunds.com/ion_auth/)應用程序,已經設置完成所有這些工作,包括各種用戶組。爲什麼重新發明輪子? – Sparky 2015-02-07 21:36:23
@Sparky嗨,謝謝你的介紹,我將學習一下,因此我可以學到很多東西:) – 2015-02-07 22:43:11