繁体   English   中英

Codeigniter登录会话未知错误

[英]Codeigniter Login session Unknown Error

大家好。

我的CMS登录中有问题,当我单击登录按钮时,登录页面刷新并再次出现。 会话库已定义。 会话加密密钥已设置。

登录控制器代码为:

<?php
class User extends Admin_Controller {

public function __construct(){
    parent::__construct();
}

public function login(){

    $dashboard = 'admin/dashboard';
    $this->user_m->loggedin() == FALSE || redirect($dashboard);

    $rules = $this->user_m->rules;
    $this->form_validation->set_rules($rules);
    if ($this->form_validation->run() == TRUE) {
        // We can login and redirect
        if ($this->user_m->login() == TRUE) {
            redirect($dashboard);
        }
        else {
            $this->session->set_flashdata('error', 'That email/password combination does not       exist');
            redirect('admin/user/login', 'refresh');

    }
}
$this->data['subview'] = 'admin/user/login';
$this->load->view('admin/_layout_modal', $this->data);
}

public function logout(){
    $this->user_m->logout();
    redirect('admin/user/login');
}
}

登录模型代码为:

<?php
class User_M extends MY_Model
{

protected $_table_name = 'users';
protected $_order_by = 'name';
public $rules = array(
    'email' => array(
        'field' => 'email', 
        'label' => 'Email', 
        'rules' => 'trim|required|valid_email|xss_clean'
    ), 
    'password' => array(
        'field' => 'password', 
        'label' => 'Password', 
        'rules' => 'trim|required'
    )
);

function __construct ()
{
    parent::__construct();
}

public function login ()
{
    $user = $this->get_by(array(
        'email' => $this->input->post('email'),
        'password' => $this->hash($this->input->post('password')),
    ), TRUE);

    if (count($user)) {
        // Log in user
        $data = array(
            'name' => $user->name,
            'email' => $user->email,
            'id' => $user->id,
            'loggedin' => TRUE,
        );
        $this->session->set_userdata($data);
    }
}

public function logout ()
{
    $this->session->sess_destroy();
}

public function loggedin ()
{
    return (bool) $this->session->userdata('loggedin');
}

public function hash ($string)
{
    return hash('sha512', $string . config_item('encryption_key'));
}
}

我建议最好将登录视图置于其他状态,

public function login(){
$dashboard = 'admin/dashboard';
$this->user_m->loggedin() == FALSE || redirect($dashboard);
$rules = $this->user_m->rules;
$this->form_validation->set_rules($rules);
if($this->input->post()) {       //check if request if post
if ($this->form_validation->run() == TRUE) {
    // We can login and redirect
    if ($this->user_m->login() == TRUE) {
        redirect($dashboard);
    }
    else {
        $this->session->set_flashdata('error', 'That email/password combination does not       exist');
        redirect('admin/user/login', 'refresh');

   } 
  }
 } else {     //defult login page
  $this->data['subview'] = 'admin/user/login';
  $this->load->view('admin/_layout_modal', $this->data);
} }

如果仍然遇到问题,请手动调试并检查卡住的地方!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM