0

我按照这个很棒的教程创建了一个非常简单的(一级)登录系统。login() method in controller但每次我尝试登录时,我总是重定向回我的登录表单 ( )。

这是我的控制器的代码:

public function login() {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('txt_email', 'Email', 'required|valid_email');    

        if($this->form_validation->run() !== FALSE)
        {
            $log_in = $this->backend_m->log_in($this->input->post('txt_email'), $this->input->post('txt_password'));
            if($log_in !== FALSE)
            {
                $_SESSION['username'] = $this->input->post('txt_email');
                redirect('backend/index');
            }
            //redirect('backend/index');
        }

        $this->load->view('backend/login_v');
    }

这是第backend/index一个代码(登录后我重定向的那个,我认为错误在这里,因为我总是重定向回backend/login):

public function index() {
    //check authorization
    if(!isset($_SESSION['username']))
        redirect('backend/login');

这是我的模型:

public function log_in($email, $password) {
        $result = $this->db->where('email', $email)->where('password', sha1($password))->get('mspengurus');     

        if($result->num_rows() > 0 )
            return $result->row();

        return FALSE;
    }

这是我的观点:

<body>
    <div id="login">
        <h1>Login - GABDB</h1>
        <?php echo form_open('backend'); ?>
            <table>
                <tr>
                    <td>
                        <?php echo form_label('Email :', 'lbl_email'); ?>
                    </td>
                    <td>
                        <?php echo sha1('admin'); ?>
                        <?php echo form_input('txt_email', set_value('txt_email'), 'id="txt_email"'); ?>
                        <?php echo validation_errors(); ?>
                    </td>
                </tr>
                <tr>
                    <td>
                        <?php echo form_label('Password :', 'lbl_password'); ?>
                    </td>
                    <td>
                        <?php echo form_password('txt_password', '', 'id="txt_password"'); ?>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <?php echo form_submit('btn_submit', 'Log In', 'id = "btn_submit"'); ?>
                    </td>
                </tr>
            </table>
        <?php echo form_close(); ?>
    </div>
</body>
4

1 回答 1

0

使用此方法在您的 login() 函数中设置会话

$this->load->library('session'); 
$seesion_data = array(
                   'username'  => $this->input->post('txt_email'),

                   'logged_in' => TRUE
               );

 $this->session->set_userdata($seesion_data); 

在 index() 函数中使用它

$this->load->library('session');
$username = $this->session->userdata('username');
if(empty($username)){
 redirect('backend/login');
}
于 2013-04-17T05:27:04.570 回答