我是CodeIgniter的新手。我试图在CodeIgniter中进行多级用户登录,但仍然无法登录,总是返回登录页面。我想将每个级别的用户重定向到每个成员区页面。
这是我的控制器成员。hp:
class Member extends CI_Controller{
function __construct() {
parent::__construct();
$this->load->helper(array('form','url'));
$this->load->model('account_model');
}
function login(){
$form_data = $this->input->post('data');
if(!empty($form_data))
{
if($this->account_model->login($form_data['username'], $form_data['password']))
{
redirect('member/index');
} else {
redirect('member/login');
}
}
$this->load->view('login');
}
}
model account_model.php:
class Account_model extends CI_Model{
private $table = 'akun';
function __construct() {
parent::__construct();
}
function login($username, $password, $level){
$data = $this->db->where(array('username'=> $username, 'password'=> $password, 'level'=> $level))->get($this->table);
if($data->num_rows() > 0){
$akun = $data->row();
$session = array(
'logged_in' => 1,
'username' =>$akun->username,
'level' =>$akun->level,
);
$this->session->set_userdata($session);
return true;
} else {
$this->session->set_flashdata('notification', 'Username and Password not match');
return false;
}
}
查看login.php:
<?php echo form_open('member/login') ?>
<div class="input">
<?php
echo form_label('Username');
echo form_input('data[username]');
=?>
</div>
<div class="input">
<?php
echo form_label('Password');
echo form_password('data[password]');
?>
</div>
<div class="submit">
<?php
echo form_submit('login', 'Login');
?>
</div>
<?php echo form_close() ?>
这是我在数据库中的表:
CREATE TABLE IF NOT EXISTS `akun` (
`username` varchar(20) NOT NULL,
`password` varchar(8) NOT NULL,
`level` varchar(12) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我在成员区的应用程序/视图中有一个名为member.php的页面。但我无法从登录重定向到那个页面。此外,我仍然不知道如何将不同级别的用户重定向到每个成员区域。我希望有人能解决我的问题。
您的代码中有多个问题,包括行
echo form_password('data[password]');
您没有向视图传递任何数据,但仍在尝试显示它。更不用说语法错误了。要将数据传递到视图,请尝试以下操作:
$this->load->view('login',$data);
并确保$data中有正确的数据。然而,这只是一个问题。您需要比以前更彻底地阅读CI用户指南。