【问题标题】:Codeigniter userdata removed right after creation创建后立即删除 Codeigniter 用户数据
【发布时间】:2014-04-18 10:34:42
【问题描述】:

我正在编写一个登录脚本,它曾经完美地工作,但突然间它停止工作了。我注释掉了很多代码,但它仍然是一样的。当我登录时,它会看到用户数据,但之后它就消失了。

这是我在控制器中得到的:(我将注释代码保留)

登录控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends MY_Controller {

    public function __construct(){
        parent::__construct();
        $this->smarty->assign('header',"../../../views/login_header.tpl");
        $this->smarty->assign('footer',"../../../views/login_footer.tpl");
        $this->load->library('form_validation');
    }

    public function index()
    {
        $this->load->model('mdl_login');
        $email = $this->input->post('email');
        $password = $this->input->post('password');

        $this->form_validation->set_rules('email', 'Email',  'required|valid_email');
        $this->form_validation->set_rules('password', 'Password', 'required|callback_credential_check');


        if ($this->form_validation->run() == FALSE)
        {
            $errors = validation_errors();
            $this->smarty->assign('errors', $errors);
        }
        elseif($this->mdl_login->login($email, $password) == FALSE){
            $errors = 'Your login information is incorrect.';
            $this->smarty->assign('errors', $errors);
        }
        else //Validation success
        {

            //Get user
            $user = $this->mdl_login->user($email);
            $user['logged_in'] = TRUE;


            //It's not the if statement here because I also tried without it
            if($this->session->userdata('logged_in') == FALSE){
            $this->session->set_userdata($user);
            }

            print_r($this->session->all_userdata());
            die(); //At this point the userdata is correct but on refresh or going to another page it isn't

            //Redirect to homepage
            //redirect('dashboard', 'refresh');
        }
        $this->smarty->view('login/login.tpl');
    }
}

登录模式:

<?php
class Mdl_login extends CI_Model {
    public function login($email, $password){
            return TRUE;
    }

    public function user($email){
        $query = $this->db->get_where('korisnici_tbl', array('email' => $email));
        return $query->row_array();
    }
}

?>

我的控制器:

<?php (defined('BASEPATH')) OR exit('No direct script access allowed');

/* load the MX_Controller class */
require APPPATH."third_party/MX/Controller.php";

class MY_Controller extends MX_Controller {
    public function __construct(){
        print_r($this->session->all_userdata());
        $this->smarty->assign('header',"../../../views/header.tpl");
        $this->smarty->assign('footer',"../../../views/footer.tpl");
        $this->smarty->assign('form_url_plugin',"../../../views/form_url_plugin.tpl");
        $this->smarty->assign('controller',$this->uri->segment(1));
        $this->smarty->assign('userdata',$this->session->all_userdata());

        if($this->session->userdata('logged_in') != TRUE && $this->uri->segment(1) != 'login'){
            if($this->session->userdata('logged_in') != TRUE){
                print_r($this->session->all_userdata());
        }
            //redirect('login', 'refresh');
        }
    }
}

我正在使用模块化扩展。我确信 My_Controller 没有任何问题,因为我通过将其设置回 MX_Controller 对其进行了测试。 (我从未更改过 MX_Controller 中的任何内容)

【问题讨论】:

  • 也许这意味着会话正在工作,但不知何故浏览器无法识别您的会话,您确定您的浏览器中启用了 cookie?
  • 是的,我也在不同的浏览器中尝试过。这是我刷新或转到另一个页面时得到的信息: Array ( [session_id] => f416770b1d10c90b91045471faaa4854 [ip_address] => ******* [user_agent] => Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 [last_activity] => 1397816629 [user_data] => )
  • 请给我看看 MY_Controller 好吗?
  • 您是否在控制器中添加了 credential_check 功能
  • 哦,我忘了删除它,但不是因为那个。

标签: php codeigniter session user-data


【解决方案1】:

我找到了我的问题的答案。在我的模型中,我添加了登录用户的所有数据。其中一列包含 IP 地址。而且我不知道确切原因,但是当我将 IP 地址添加到会话时,它会删除会话,并使用默认的 codeigniter 会话数据和新的会话 ID 添加一个新会话。

所以我无法在我的用户数据中存储 IP 地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 2014-03-22
    • 2015-07-21
    相关资源
    最近更新 更多